2009-09-04 3 views
0

Я пытаюсь распространить схему из конфигурации Hibernate на РСУБД. Код запускается без сообщения об ошибке, но база данных не обновляется.Невозможно создать схему из Hibernate

Любые подсказки? Спасибо !

Обновление Это hibernate-core только с базой данных HSQL.

Обновление 2 Да, я должен использовать SchemaExport (я далеко от hibernate a while), но он не скрывается в базе данных. Это база данных в базе данных HSQL (jdbc: hsqldb: файл: config/config).

Обновление 3 Что-то не работает с HSQL, теперь пытается работать с MySQL, и все работает нормально!

public static void exportSchema() { 
     new SchemaExport(hbConfig).create(true, true); 
    } 


public static void exportSchemaXXX() { 

// sessionFactory and hbConfig defined in the class 

     Session sess = sessionFactory.openSession(); 

     sess.doWork(new Work() { 

      public void execute(java.sql.Connection conn) throws SQLException { 
       System.err.println("work"); 
       try { 
        Class dialect = Class.forName(hbConfig.getProperty("hibernate.dialect")); 
        String[] lines = hbConfig.generateSchemaCreationScript((Dialect) dialect.newInstance()); 

        for (String s : lines) { 
         System.err.println(s); 
         Statement stm = conn.createStatement(); 
         stm.execute(s); 
        } 
       } catch (Exception ex) { 
        System.err.println("Error: " + ex); 
       } 

      } 
     }); 

     sess.flush(); 
     sess.close(); 
    } 
+0

Вы используете спящий режим самостоятельно? Или вы используете весну? – Zoidberg

+0

Происходит ли код в вашем цикле for? –

ответ

0

Убедитесь, что транзакция зафиксирована. Некоторые базы данных будут фактически откатывать изменения схемы, если транзакция будет откатна.

0

Вы можете попробовать форсировать фиксацию, когда вы закончили, но не знаете, как использовать вашу базу данных. Я не уверен, если это проблема. Предполагая, что вы используете pojo для представления вашей схемы базы данных, почему вы выполняете инструкции один за другим через соединение JDBC вместо использования Hibernates, построенного в классе схемы, аналогично следующему?

config=new AnnotationConfiguration() 
config.addAnnotatedClass(Badge.class) 
config.addAnnotatedClass(Vote.class) 
config.configure() 
new SchemaExport(config).create(true,true)//create the database tables

Для получения дополнительной информации об этом см this link

0

Имейте это сейчас. Кажется, что HSQLDB, начинающийся с version 1.7, нуждается в выключении для внутренней памяти, чтобы очистить все изменения.

Смежные вопросы