0

例如,我在数据库中有一个表和一个获取表 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 ....

在我的休眠数据对象类中,我想添加一个保存函数执行结果的属性。使用注释的正确方法是什么?

@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 读取对象。

谢谢你。

4

1 回答 1

1

用这个:

@Formula( "getNum(test1_id)" )
private BigDecimal test_num; 
于 2012-06-01T22:31:32.237 回答