如何将另一列映射到Hibernate bean



我有一个使用hbm.xml文件映射到Hibernate的对象。该表的BEAN/对象包括一个额外的字段,带有适当的getter/setter。我想这样做:

SELECT T.*, 'XYZ' as otherData FROM table T

,并将所有数据映射到BEAN中,包括假/附加列的值- 'otherData '。

这应该是简单的,也许我错过了一些容易的,但我不能得到它的工作。我试过使用

createSQLquery() with addEntity(), addScalar(), setResultTransformer()

createCriteria() with a projectionList() and setResultTransformer()

和其他任何我能想到的东西都没有得到想要的结果。我不想要一个通用的对象列表,我必须通过解析来构建我的对象,我也不想在构建这个查询时指定表的每一列。

有什么办法可以做到吗?

您可以考虑为属性使用公式。您可以用任何SQL查询数据填充它。例如,考虑一个订单-订单行关系,其中您希望用订单行数填充订单的属性,如:

public class Order {
  private String orderNumber;
  private int lineCount;

…}

则映射将是:

<class name="Order" ....>
  ...
  <property name="lineCount"
    formula="(select COUNT(*) from ORDER_LINE l where l.ORDER_NUMBER = ORDER_NUMBER)"/>
  ...
</class>

最新更新