首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate 4中的编程SchemaUpdate

Hibernate 4中的编程SchemaUpdate
EN

Stack Overflow用户
提问于 2012-12-18 18:07:50
回答 1查看 990关注 0票数 2

我正在尝试在我的JavaEE6应用程序中运行SchemaUpdate。在以前的Hibernate版本中,我设法做到了创建一个Ejb3Configuration,然后运行一个SchemaUpdate。就像这样:

代码语言:javascript
复制
Ejb3Configuration cfg = new Ejb3Configuration();
cfg.configure(PERSISTENCE_UNIT_NAME, null);
cfg.setProperty("hibernate.hbm2ddl.auto", "update");
cfg.setProperty("hibernate.dialect", dialect.getClass().getName());
Collection<String> entityClassNames = getEntityClassNames(PERSISTENCE_UNIT_NAME);
for (String className : entityClassNames)
{
    cfg.addAnnotatedClass(Class.forName(className));
}

EntityManagerFactory factory =  Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);

new SchemaUpdate(cfg.getHibernateConfiguration()).execute(true, true);

显然,Ejb3Config类已被弃用,也不受支持。那么用hibernate 4做SchemaUpdate的正确方式是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2012-12-18 20:32:31

您说您使用的是EE6,因此您使用的是persistence.xml和所有标准的JPA吗?如果不是,那么这就是一个错误,第一步是返回并修复它。使用persistence.xml,您可以在启动时使用以下属性指定模式更新:

代码语言:javascript
复制
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="...">
        <properties>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>

</persistence>

这样做合适吗?或者,您是否有手动执行此操作的部分原因?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13930529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档