0

我想在休眠中执行以下sql:

SELECT emp.*, utilsPkg.getEmployeeDisplayName(emp.id) FROM employee emp;

到目前为止一切都很好......问题是 - 我需要将它提取到一个实体 - 所以我可以更新员工。当然,pl\sql 函数不可更新,也不属于实际表...

如何在休眠中生成这样的实体 - 具有计算且不可更新的字段?

非常感谢!

4

3 回答 3

1

使用@Formula注释,如Hibernate 文档中所述:

有时,您希望数据库为您而不是在 JVM 中进行一些计算,您还可以创建某种虚拟列。您可以使用 SQL 片段(又名公式)而不是将属性映射到列。这种属性是只读的(其值由您的公式片段计算)。

于 2012-06-04T21:36:10.117 回答
0

我不确定我是否完全理解您的问题,但您始终可以使用Hibernate 实体生命周期回调,或者您可以直接在查询中提供它:

select new MyEntity(o.column1, o.column2, utilsPkg.getEmployeeDisplayName(o.id)) from MyEntity as o where o.id = 5

当然,您必须实现适当的构造函数。

于 2012-06-04T21:38:34.037 回答
0

使用该@Transient属性的 getter 方法上的注释。

于 2012-06-04T21:19:44.040 回答