在 JPA/Eclipselink 中支持 table 结构更改
Supporting table structure changes in JPA/Eclipselink
我是 JPA/Eclipselink 的新手,面临一个分为两部分的问题 -
首先 - 我需要在现有 table 中添加 CLOB 字段。我对持久性 类 进行了必要的更改,它使用 MySQL 作为数据库,而无需更改以下 属性:
<property name="eclipselink.ddl-generation" value="create-tables"/>
但是在 DB2 数据库上它不能那样工作,必须将其更改为:
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
我意识到这不适用于生产环境 运行 DB2,我不确定 JPA/Eclipselink 是否支持在不删除列的情况下创建列其余数据。
其次 - CLOB 或 LOB 字段在 DB2 上的处理方式与在 MySQL 上的处理方式不同。虽然它在我部署我的应用程序时为 DB2 数据库生成了必需的 SQL 脚本,但它看起来还不够(DB2 不仅需要 CLOB 列的字段声明 - 似乎是 ROWID,table空间和其他一些东西是必要的)。
JPA 支持这个吗?如果没有,我可以通过 JPA post 部署为 运行 脚本提供额外的操作吗?
以上任何帮助都会很棒。
如果您向模型中添加一个字段,create-tables 应该不起作用,因为 table 已经存在。对模型进行附加更改时,需要使用 drop-and-create-tables 或 create-or-extend-tables。有关不同的 EclipseLink ddl 选项,请参阅 here。尽管 DDL 在生产中通常不被接受 - 您将希望创建自己的脚本以用于与 JPA 模型分开为您的数据库用例自定义它。
我是 JPA/Eclipselink 的新手,面临一个分为两部分的问题 - 首先 - 我需要在现有 table 中添加 CLOB 字段。我对持久性 类 进行了必要的更改,它使用 MySQL 作为数据库,而无需更改以下 属性:
<property name="eclipselink.ddl-generation" value="create-tables"/>
但是在 DB2 数据库上它不能那样工作,必须将其更改为:
<property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
我意识到这不适用于生产环境 运行 DB2,我不确定 JPA/Eclipselink 是否支持在不删除列的情况下创建列其余数据。
其次 - CLOB 或 LOB 字段在 DB2 上的处理方式与在 MySQL 上的处理方式不同。虽然它在我部署我的应用程序时为 DB2 数据库生成了必需的 SQL 脚本,但它看起来还不够(DB2 不仅需要 CLOB 列的字段声明 - 似乎是 ROWID,table空间和其他一些东西是必要的)。 JPA 支持这个吗?如果没有,我可以通过 JPA post 部署为 运行 脚本提供额外的操作吗?
以上任何帮助都会很棒。
如果您向模型中添加一个字段,create-tables 应该不起作用,因为 table 已经存在。对模型进行附加更改时,需要使用 drop-and-create-tables 或 create-or-extend-tables。有关不同的 EclipseLink ddl 选项,请参阅 here。尽管 DDL 在生产中通常不被接受 - 您将希望创建自己的脚本以用于与 JPA 模型分开为您的数据库用例自定义它。