我希望Hibernate 3.3.0通过在SELECT
(INSERT
)之前执行persist()
查询来生成值。哪个会这样工作:
@Generated(GenerationTime.INSERT)
@GenerateSQL("SELECT RANDOM() * 2")
private int number;
我看过@Generated()
,这对TRIGGER
有好处。我不想引入触发器。
我也看了@Formula
,这是只读的。
那么,注释的正确组合是什么?感谢。
答案 0 :(得分:1)
我希望Hibernate 3.3.0通过在INSERT
之前执行SELECT查询来生成值
我认为这不受支持。
备选方案#1:您可以直接在代码中执行SELECT作为“创建”逻辑的一部分。
备选方案#2:使用Hibernate拦截器,提供对SessionFactory
的引用,并在onSave
期间从拦截器执行SELECT。
那么,正确的注释组合是什么?
实际上不支持设置默认值(请参阅HHH-4341),最简单的解决方案是IMO在列级别定义DEFAULT值。这将是我的替代#3 。下面是一个例子:
@Generated(GenerationTime.INSERT)
@Column(insertable=false, columnDefinition="INT DEFAULT 20")
private int someNumber;
我不知道这是否适合您,我不确定数据库是否支持在DEFAULT中使用RANDOM()
(RANDOM() * 2
如何成为{{1} }} 顺便说说?)。