如何防止Hibernate公式注释在保留字之前添加表名?

时间:2014-04-28 07:56:07

标签: java sql-server hibernate

我的课程映射如下:

@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生成查询以获取订单时,它会将表的别名附加到FORXML个单词。所以它试图执行像

这样的查询
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。我知道自定义方言可以成为一种解决方案,但我不想走这个方向。

1 个答案:

答案 0 :(得分:2)

您可以使用我在此问题中撰写的相同解决方案:https://stackoverflow.com/a/26907699/825061

简短的回答是扩展您使用的hibernate方言类并注册新的保留字。