2009-09-04 7 views
0

최대 절전 모드 구성에서 RDBMS로 스키마를 전파하려고합니다. 코드는 오류 메시지없이 실행되지만 데이터베이스는 업데이트되지 않습니다.최대 절전 모드에서 스키마를 생성 할 수 없음

힌트가 있습니까? 고맙습니다 !

업데이트 이것은 HSQL 데이터베이스에서만 하이버 네이트 코어입니다.

업데이트 2 예, 저는 SchemaExport (나는 최대 절전 모드에서 벗어났습니다)를 사용해야하지만 데이터베이스로 플러시하지 않습니다. HSQL in-process 데이터베이스 (jdbc : hsqldb : file : 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를 사용하여 데이터베이스 스키마를 표현한다고 가정 할 때 왜 다음과 유사한 스키마 클래스로 빌드 된 Hibernate를 사용하는 대신 JDBC 연결을 통해 하나씩 명령문을 실행 하는가? this link

0

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

이에 대한 자세한 정보는 참조하십시오 지금이 되세요. version 1.7으로 시작하는 HSQLDB가 모든 변경 사항을 플러시하기 위해 메모리 내에서 종료되어야한다고 봅니다.

관련 문제