【发布时间】:2012-08-04 21:04:09
【问题描述】:
我有一个名为 X 的 Hibernate 托管 Java 实体和一个本机 SQL 函数 (myfunc),我从 Hibernate SQL 查询中调用这些函数:
SQLQuery q = hibernateSession.createSQLQuery(
"SELECT *, myfunc(:param) as result from X_table_name"
);
我想要做的是将这个查询返回的所有内容映射到一个名为 Y 的类(不一定由 Hibernate 管理)。Y 应该包含来自 X 的所有属性/字段加上 myfunc 返回的 result,例如Y 可以扩展类 X 并添加一个“结果”字段。
我尝试过的:
- 我试过使用
q.addEntity(Y.class),但失败了:org.hibernate.MappingException: Unknown entity com.mycompany.Y -
q.setResultTransformer(Transformers.aliasToBean(Y.class));但这失败了:org.hibernate.PropertyNotFoundException: Could not find setter for some_property。 X 有一个名为someProperty的字段,带有适当的 getter 和 setter,但在这种情况下,Hibernate 似乎没有将列名 (some_property) 映射到正确的字段名。 -
q.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);返回一个 Map,但值并不总是 X 中相应字段所期望的类型。例如,X 中类型为 enum 和 Date 的字段不能直接从 SQL 查询返回的 Map 映射(它们是字符串)。
处理这种情况的适当方法是什么?
【问题讨论】:
标签: java hibernate hibernate-mapping