当表已经创建时,set length在休眠状态下不起作用

时间:2017-09-12 03:42:43

标签: java mysql hibernate

EmployeeDetails表上的

employeeDesc列的默认长度为varchar(255)。 现在我希望改变它。 我试过给持久化课程定制长度。

@Entity
public class EmployeeDetails {
@Id
private int employeeId;
private String employeeName;
private int employeeAge;
@Column (length = 500)
private String employeeDesc;
   // getters and setters
}

这是我的休眠配置。

<property name="hbm2ddl.auto">update</property>

如果我试图为字段employeeDesc提供超过255的值,我收到错误说

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'employeeDesc' at row 1

有没有更好的方法来更改employeeDesc的长度而不更改“hbm2ddl.auto”&gt;更新属性?

3 个答案:

答案 0 :(得分:0)

您可以使用@Lob注释。代码类似于:

@Lob
@Column
private String employeeDesc;

访问this link获取信息

答案 1 :(得分:0)

在更新/验证期间,Hibernate不会更新列长度。您可以尝试使用Liquibase。但我不确定您是否可以将Hibernate updateLiquibase一起使用。

答案 2 :(得分:0)

hibernate.hbm2ddl.auto value="update"不会更改列定义(如果已存在)。

如果仅通过从您的实体中删除表中的可用列,这甚至都不会删除。

hibernate.hbm2ddl.auto value="update"可以仅添加新列/新索引/新约束。