2016-12-07 33 views
0

JPQL:PSQLException:錯誤:無法識別的等號操作XML類型

select distinct ref 
FROM Data d 
    inner join d.reference ref 
WHERE d.role = 'admin' 
ORDER BY ref.id 

這JPA查詢失敗,以下錯誤:

PSQLException: ERROR: could not identify an equality operator for type xml

版本:在PostgreSQL 9.3和JDK 1.7

Data實體包含一個xml類型字段。查詢中的引用引用數據類型對象,即數據實體本身引用數據類型的對象。 這將工作,如果我們使用不同的PK領域,但需要返回唯一的對象不只是身份證。我們正在使用JPA查詢語言而非原生查詢。任何解決方案?

回答

1

我假設refxml類型;如果沒有,則顯示你的表格定義。

你可能要投ref鍵入text,因爲平等不是爲xml定義,你要如何處理DISTINCT沒有什麼平等是一個概念?

或者,您可以使用不同的數據類型或使用CREATE OPERATOR來定義xml上的相等運算符。但是,兩個XML文檔何時相等?

+1

我猜他正在使用JPQL而不是SQL。 JPQL不需要「ON」條款,他正在加入關係。 –

+0

是的,我給了JPQL查詢。 ref是Data類型的,即Data實體本身具有對另一個Data實體的引用。我使用JPA(Hibernate)獲取完整的數據對象。這就是爲什麼在這種情況下轉換爲文本或PK域的DISTINCT不適用的原因。 –

+0

我明白了。那麼,如果你使用的ORM比你不能指定類型轉換的限制,你可以使用不同的數據類型或者爲'xml'定義一個相等運算符。 –