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