我在数据库中有一个表,一个函数接受表的id并返回一些数字,例如(我使用Oracle语法,但我相信RDMS在这种情况下并不重要),
CREATE TABLE test1( test1_id INT NOT NULL PRIMARY KEY,
val VARCHAR(50));
CREATE FUNCTION getNum (id IN test1.test1_id%type) RETURN NUMBER IS ....
在我的hibernate数据对象类中,我想添加一个保存函数执行结果的属性。使用注释的正确方法是什么?
@javax.persistence.Table(name = "test1", schema = "test", catalog = "")
@Entity
public class Test1Entity
{
private int test1Id;
@Column(name = "test1_id", nullable = false, insertable = true,
updatable = true, length = 22, precision = 0)
@Id
//get/set
...
// is it possible to use annotations,
// so it will call a function to populate this field ?
private BigDecimal test_num;
}
我正在考虑创建命名本机查询,例如SELECT a.test1_id, a.val, getNum(a.test1_id) as test_num FROM test1 a WHERE a.test1_id = :param_test1_id
,但这意味着我无法使用Session.get
从DB读取对象。
谢谢。
答案 0 :(得分:1)
使用此:
@Formula( "getNum(test1_id)" )
private BigDecimal test_num;