本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看< 活动链接 >
提问:如何为JPA中的列设置默认值?
可以为JPA中的列设置默认值吗?如果使用注释,如何做到这一点?
在2017年,JPA 2.1仍然只有@Column(columnDefinition ='...'),您在其中放置了该列的文字SQL定义。 这是非常不灵活的,迫使您也声明其他方面,例如类型。
Hibernate可以:
@Column(length = 4096, nullable = false)
@org.hibernate.annotations.ColumnDefault("")
private String description;
在注释上标记默认值用于关联列比如说DDL
你可以查看以下两个文档
Hibernate 4.3 docs (4.3 to show it's been here for quite some time)
有关数据库默认列的值的Hibernate手册
1)不要害怕变得不合标准。 作为JBoss开发人员,我已经看到了很多规范过程。 该规范基本上是给定领域的大型企业愿意在未来十年左右支持的基线。 对于安全性而言,对于消息传递而言,ORM没什么不同(尽管JPA涵盖了很多内容)。 我作为开发人员的经验是,在复杂的应用程序中,迟早您还是需要一个非标准的API。 @ColumnDefault是一个示例,它胜过使用非标准解决方案带来的负面影响。
2)大家都说@PrePersist或构造函数成员初始化,这确实不错。 但这不一样。 批量SQL更新如何? 没有设置列的语句怎么样? DEFAULT具有它的作用,并且不能通过初始化Java类成员来替代。