【问题标题】:using Hibernate-tools to update schema使用 Hibernate-tools 更新架构
【发布时间】:2012-01-09 22:23:48
【问题描述】:

我目前正在使用 EclipseLink JPA,并且在我的 persistence.xml 文件中设置了这个属性

<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>

value 字段当前设置为在每次运行时删除并创建表,这导致我的测试数据被删除。不幸的是,EclipseLink 不支持update 模式属性,该属性与我项目中对实体的任何更改集成。我在某处读到,Hibernate-tools 可用于在不删除当前记录的情况下更新数据库架构?

我试过这个属性

 <property name="eclipselink.ddl-generation" value="create-tables"/>

虽然它确实保留了我的数据,但它不会更新表架构。

我可以在我的 persistence.xml 中包含 hibernate 属性吗?

 property name="hibernate.hbm2ddl.auto" value="update"

【问题讨论】:

    标签: eclipselink database-schema hibernate-tools


    【解决方案1】:

    EclipseLink(从 2.3.2 开始)不支持 DDL 更改现有表以添加缺失字段。请参阅功能请求https://bugs.eclipse.org/bugs/show_bug.cgi?id=368365

    【讨论】:

    • 此功能会添加到即将发布的版本中吗?
    【解决方案2】:

    不,您只能使用标准 jpa 属性或持久性提供程序的属性(在您的情况下为 EclipseLink)。相信here你会找到答案的。

    【讨论】:

    • 好的,我知道我不能混合持久性提供程序,但是您发送的链接没有给出关于如何设置告诉 EclipseLink '更新'模式的属性的答案。根据 EclipseLink 的 value = 'create-table' 将为每个表执行 CREATE TABLE SQL。如果表已经存在。我需要它来更新架构而不删除数据
    • 更新数据库并保存旧数据并非不可能。
    • 注意* 这不是用于生产,而是用于开发。我必须不断创建与测试相同的记录,这变得很烦人。你有例子吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    • 2019-04-21
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多