我正在尝试运行这个JPQL查询:
SELECT DISTINCT i FROM Table i JOIN i.other o
出现以下错误:
"内部异常:java.sql.SQLException: 由于该类型不支持比较,因此不能在 CREATE INDEX、ORDER BY、GROUP BY、UNION、INTERSECT、EXCEPT 或 DISTINCT 语句中使用 'BLOB' 类型的列。"
我理解这个错误,但是我该如何解决它?
我正在尝试运行这个JPQL查询:
SELECT DISTINCT i FROM Table i JOIN i.other o
出现以下错误:
"内部异常:java.sql.SQLException: 由于该类型不支持比较,因此不能在 CREATE INDEX、ORDER BY、GROUP BY、UNION、INTERSECT、EXCEPT 或 DISTINCT 语句中使用 'BLOB' 类型的列。"
我理解这个错误,但是我该如何解决它?
SELECT i from Table WHERE id IN (
SELECT id FROM (
SELECT MIN(id) AS id, hash_of_i FROM Table GROUP BY hash_of_i
) t
)
得到HermanD的启发后,我找到了这个可行的解决方案:
SELECT i FROM Table i WHERE EXISTS (
SELECT e FROM Table e JOIN e.other o WHERE e.id=i.id
)
类型为BLOB的列中的值仅是指向实际数据存储的指针。要应用任何这些运算符,您需要从BLOB中加载数据并实现自己的逻辑,因为数据可以表示任何东西(图像、文本等)
在你的查询中使用setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)代替distinct。