2012-03-16 50 views
0

我有一個hibernate @NamedQueries的問題。我有一個名爲'group'的列表SCP_PMAT。在映射中不是問題。這我用括號解決。帶保留字的Hibernate @NamedQueries

public class ScpPmat{ 
    @Column(name = "[group]") 
    private String group; 
} 

但是,當我想使用@NamedQuery有一個問題。我如何編寫列名查詢?

@NamedQuery(name = "readScpPmatByGroup", 
query = "FROM ScpPmat where group = :group") 

希望這段代碼足夠了。 感謝

+1

如果滿意,請不要忘記接受答案。 – 2012-03-16 16:20:08

回答

0

您可以用引號將保留字:

query = "FROM ScpPmat where \"group\" =:group") 
+1

我試過這個,但有這個異常'錯誤命名查詢:readScpPmatByGroup org.hibernate.QueryException:unexpected char:''''[FROM core.dao.ScpPmat where'group'=:group]' – yen1k 2012-03-16 16:24:30

+1

我試過了括號也.. ..但同樣的例外..: -/ – yen1k 2012-03-16 16:25:04

1

最佳選項:更改列的名稱不能是保留字。它通常是不好的做法,並且可能會導致Java代碼和SQL中的頭痛,就像你正在經歷的那樣。

另一種選擇是將Java字段名稱從保留字更改爲非保留字,如groupCol

+0

當然,這是最好的。讓我們談談我們的數據庫'專家' – yen1k 2012-03-23 10:55:24