【发布时间】:2014-06-13 16:05:04
【问题描述】:
我的班级映射如下:
@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 生成查询以获取 Order 时,它会将表的别名附加到 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
附注我知道自定义方言可以成为一种解决方案,但我不想朝那个方向发展。
【问题讨论】:
-
尝试将您的逻辑外部化以发挥作用(CREATE FUNCTION)。
-
@Eugene 感谢您的建议。会试一试:)
标签: java sql-server hibernate