我正在尝试将架构从Hibernate配置传播到RDBMS。代码运行时没有任何错误消息,但数据库没有更新。
任何提示?谢谢!
更新只有HSQL数据库才是hibernate-core。
更新2 是的,我应该使用SchemaExport(我暂时离开hibernate),但它不会刷新到数据库。它是一个HSQL进程内数据库(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 :(得分:0)
确保您的交易已提交。如果事务被回滚,某些数据库实际上将回滚模式更改。
答案 1 :(得分:0)
你可以在完成后尝试强制提交,但不知道你使用的数据库我不确定这是否是问题。假设您使用pojo来表示数据库模式,为什么要通过JDBC连接逐个执行语句,而不是使用类似于以下内容的模式类中的Hibernate?
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
答案 2 :(得分:0)
现在就有这个。似乎以version 1.7开头的HSQLDB需要关闭内存以刷新所有更改。