如何将属性执行的属性添加到数据对象

时间:2012-06-01 15:41:04

标签: hibernate jpa annotations

我在数据库中有一个表,一个函数接受表的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读取对象。

谢谢。

1 个答案:

答案 0 :(得分:1)

使用此:

@Formula( "getNum(test1_id)" )
private BigDecimal test_num;