我有一个使用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>