阻止Hibernate尝试从数据库中获取计算字段

时间:2010-08-18 04:45:33

标签: java hibernate orm hibernate-mapping

我有一个计算的业务对象的属性。计算涉及一些登录用户的详细信息,因此无法表示为简单的SQL查询。

我在Hibernate映射XML文件中表示字段时遇到问题,因为Hibernate继续尝试从数据库中检索字段,尽管没有该名称的列。

2 个答案:

答案 0 :(得分:1)

  

我在Hibernate映射XML文件中表示字段时遇到问题,因为Hibernate继续尝试从数据库中检索字段,尽管没有该名称的列。

我可能错过了一些明显的东西,但是......为什么要映射这个字段呢?但为了以防万一,这可能是<formula>属性的一个很好的用例。


  

该字段位于Java类中,当我编写查询时,我可以提供自定义SQL来填充它,例如:SELECT t。*,(SELECT x FROM y)AS字段FROM表t WHERE ... Hibernate然后允许我使用SQLQuery.addEntity(Z.class)并适当地创建对象。据我所知,如果我将字段完全从映射中删除,我永远无法通过查询填充该属性。我试过:)

我怀疑这样的事情,但我想得到确认。我认为你没有那么多选择:要么使用<formula>(只是为了欺骗休眠而使用“愚蠢”的公式),要么使用return a non managed entity

答案 1 :(得分:0)

听起来你想要这个属性是“瞬态的”

<transient name="foo" />