我希望 Hibernate 3.3.0 通过在( )SELECT之前执行查询来生成值。这会像这样工作:INSERTpersist()
@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?)。