簡體   English   中英

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

[英]How to prevent Hibernate formula annotation of adding table name before reserved words?

我的班級映射如下:

@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時,它將表的別名附加到FORXML字中。 因此,它嘗試執行類似的查詢

SELECT ',' + coalesce(a.description,a.code) 
    FROM another_table a 
    WHERE a.order_id=order0_.id order0_.FOR order0_.XML PATH('')

這顯然是錯誤的。 我該如何進行這項工作?
環境: Hibernate 3.6SQL-Server 2008

附言:我知道自定義方言可以解決此問題,但我不希望朝這個方向發展。

您可以使用我在此問題中編寫的相同解決方案: https : //stackoverflow.com/a/26907699/825061

簡短的答案是擴展您使用的休眠方言類並注冊新的保留字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM