【问题标题】:Remove NotNull field from hibernate entity从休眠实体中删除 NotNull 字段
【发布时间】:2018-04-25 11:54:03
【问题描述】:

我的休眠实体中有一些字段不再需要使用,因此我将其从实体中删除。 问题是现在,当有人尝试将新实体对象保存到 db 时,最终会出现“字段'{OldField}'没有默认值”的异常。这是因为实体的变化对MySql没有影响,老的字段还在,想要获取一些价值。

我可以从 MySql 中删除旧字段,但我想知道是否有更优雅的选项来处理这种情况。

谢谢!

【问题讨论】:

  • 为什么不改变表格字段并设置默认值?
  • 因为处理这种情况需要两个步骤。我考虑了一个解决方案,如果旧字段从休眠实体中删除(自动),可能会使该字段为空。

标签: java mysql hibernate


【解决方案1】:

您可以在 MySQL 中使用默认值选项。只需更改查询参数和默认值即可。

ALTER TABLE <Table_Name> MODIFY COLUMN <Col_Name> <Data_Type> NOT NULL DEFAULT '0';

或者您可以将默认值设为 NULL

ALTER TABLE <Table_Name> MODIFY COLUMN <Col_Name> <Data_Type> DEFAULT NULL;

【讨论】:

  • 有没有办法给hibernate添加一些配置让它自动运行?
  • @YairCohen 是的,您可以使用休眠设置默认值。例如:@Column(name="Col_Name",nullable=false,columnDefinition="bigint(20) default 0") public Long getColName() { return colName; }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多