2016-02-01 7 views
0

Я пытаюсь воссоздать свою базу данных Oracle в SQLite, используя Hibernate. Я использовал значение тега hbm2ddl как «create». Тем не менее моя SQLite DB не создается. Может кто-нибудь, пожалуйста, помогите мне с этим? Я разместил ниже моей cfg.xml файлАвтоматическое создание таблицы - Hibernate

<!-- language: xml --> 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory name=""> 
<property name="hibernate.connection.driver_class"> org.sqlite.JDBC </property> 
<property name="hibernate.connection.password"></property> 
<property name="hibernate.connection.username"></property> 
<property name="hibernate.dialect"> org.hibernate.dialect.SQLiteDialect </property> 
<property name="connection.url">jdbc:sqlite:resources/newdb.db</property> 
<property name="hibernate.show_sql">true</property> 
<property name="hibernate.format_sql">true</property> 
<property name="hibernate.order_updates">true</property> 
<property name="hibernate.order_inserts">true</property> 
<property name="hibernate.hbm2ddl.auto">create</property> 
</session-factory> 
</hibernate-configuration> 

ответ

0

Попробуйте заменить это:

<property name="connection.url">jdbc:sqlite:resources/newdb.db</property> 

с:

<property name="hibernate.connection.url">jdbc:sqlite:resources/newdb.db</property> 

Вы отсутствующий, чтобы написать hibernate в собственность.

И добавьте эту строку:

<property name="current_session_context_class">thread</property> 

В случае, если вы имеете объект написать их так:

<mapping class="path.to.your.Entity"/> 
+0

Привет, спасибо за Ваш ответ. Но он все еще не решает мою проблему. И что касается моих сущностей, я их автоматически создаю после подключения к базе данных Oracle. Поэтому я не добавляю их в файл cfg.xml. Вместо этого я добавляю автоматически созданный файл .hbm.xml в качестве ресурса для объекта конфигурации после его создания во время выполнения. – BB8

+0

@ BB8 вы создали свою сущность, почему вы заинтересованы в создании – Abdelhak

+0

Я хочу создать встроенную базу данных (SQLite), похожую на мою схему базы данных при каждом запуске моего инструмента. Чтобы получить обновленные классы POJO, я каждый раз их воссоздаю с производства. Моя проблема заключается в создании встроенной базы данных из вновь созданных классов POJO – BB8

0

Я думаю, что это то, что вам нужно, Сначала persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence-unit name="foo-persist" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <class>com.this.is.entity.foo</class> 
    <class>com.this.is.entity.foo</class> 
    <class>com.this.is.entity.foo</class> 
    <jta-data-source>foo-persist</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
    </properties> 
</persistence-unit> 

Во-вторых, следующий класс, который содержит свойства, необходимые инерционности-единицы:

import java.nio.file.Files; 
import java.nio.file.Paths; 
import java.util.HashMap; 
import java.util.Map; 
import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.Persistence; 

public class CommonService { 
EntityManager em; 
public static final String PERSISTENT_UNIT = "foo-persist"; 
EntityManagerFactory emf = Persistence.createEntityManagerFactory(Config.PERSISTENT_UNIT); 
Map properties = new HashMap(); 

public Map getProperties() { 
    return properties; 
} 

public EntityManager getEntityManager() { 

    properties.put("javax.persistence.jdbc.url", ""); 
    properties.put("javax.persistence.jdbc.user", "");   
    properties.put("javax.persistence.jdbc.password", ""); 
    properties.put("javax.persistence.jdbc.driver", "org.sqlite.JDBC"); 
    properties.put("eclipselink.logging.level", "OFF"); 
    properties.put("javax.persistence.schema-generation.database.action", "create"); 
    properties.put("javax.persistence.schema-generation.create-script-source", "META-INF/script.sql"); 
    properties.put("javax.persistence.sql-load-script-source", "META-INF/script.sql"); 
    emf = Persistence.createEntityManagerFactory(Config.PERSISTENT_UNIT, properties); 
    return em = (EntityManager) emf.createEntityManager(); 
} 
} 
Смежные вопросы