我的课程映射如下:
@Entity
public class Order {
private String formulatedProp;
@Formula(value="(SELECT ',' + coalesce(a.description,a.code)
FROM another_table a
WHERE a.order_id=id FOR XML PATH(''))")
public String getFormulatedProp() {
return formulatedProp;
}
}
公式的SQL查询在单独执行时很好。但是当Hibernate生成查询以获取订单时,它会将表的别名附加到FOR
和XML
个单词。所以它试图执行像
SELECT ',' + coalesce(a.description,a.code)
FROM another_table a
WHERE a.order_id=order0_.id order0_.FOR order0_.XML PATH('')
这显然是错误的。我怎样才能做到这一点? 环境: Hibernate 3.6 , SQL-Server 2008
P.S。我知道自定义方言可以成为一种解决方案,但我不想走这个方向。
答案 0 :(得分:2)
您可以使用我在此问题中撰写的相同解决方案:https://stackoverflow.com/a/26907699/825061
简短的回答是扩展您使用的hibernate方言类并注册新的保留字。