我想在hibernate中执行以下sql:
SELECT emp.*, utilsPkg.getEmployeeDisplayName(emp.id) FROM employee emp;
到目前为止一直很好...... 问题是 - 我需要将它提取到实体 - 所以我可以更新员工。 当然,pl \ sql函数不可更新,也不是实际表的一部分...
如何在hibernate中生成这样的实体 - 使用计算且不可更新的字段?
非常感谢!
答案 0 :(得分:1)
使用@Formula
注释,如Hibernate documentation:
有时,您希望数据库为您做一些计算 与JVM相比,您可能还会创建某种虚拟列。 您可以使用SQL片段(也称为公式)而不是映射属性 进入专栏。这种属性是只读的(它的值是 由公式片段计算得出。)
答案 1 :(得分:0)
对该属性的getter方法使用@Transient
注释。
答案 2 :(得分:0)
我不确定我是否完全理解您的问题,但您可以随时使用Hibernate entity lifecycle callbacks,也可以直接在查询中提供:
select new MyEntity(o.column1, o.column2, utilsPkg.getEmployeeDisplayName(o.id)) from MyEntity as o where o.id = 5
当然,您必须实现适当的构造函数。