更改由JPA生成的表列的数据类型

时间:2019-04-15 12:13:16

标签: java jpa eclipselink

  1. 是否可以更改使用JPA生成的表的列长? 我想增加此字段的长度
@NotNull
@Column(name = "ShortDescription", length = 65)
private String shortDescription;
  1. 例如如果我将长度更改为80并重新部署,列是否会更新?

1 个答案:

答案 0 :(得分:1)

  

对于EclipseLink

EclipseLink不支持对现有列的自动更新。您必须使用DDL查询手动更新它,也可以根据需要使用以下选项之一。

create-tables:EclipseLink将尝试为每个表执行一个CREATE TABLE SQL。如果该表已经存在,则EclipseLink将遵循您的特定数据库和JDBC驱动程序组合的默认行为(当为已存在的表发出CREATE TABLE SQL时)。在大多数情况下,会引发异常并且不创建表。现有表将被使用。 EclipseLink将继续执行下一条语句。

create-or-extend-tables:EclipseLink将尝试创建表。如果该表存在,则EclipseLink将添加所有缺少的列。

drop-and-create-tables:EclipseLink将尝试删除所有表,然后创建所有表。如果遇到任何问题。 EclipseLink将遵循特定数据库和特定JDBC驱动程序组合的默认行为,然后继续执行下一条语句。如果架构经常更改,或者在测试期间需要清除现有数据的情况下,这在开发中很有用。

none:默认,不生成ddl。没有生成模式。

将此属性添加到您的persistence.xml文件中。

  

对于休眠

createcreate-dropvalidateupdate基本上会影响架构工具管理在启动时如何操作数据库架构。

您可以将update的值hibernate.hbm2ddl.auto用于persistence.xml,以便在应用程序启动时更新列的长度。将此属性添加到您的udfs.py文件中。