有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java查询以获取按列的不同属性排序的所有对象?

我正在使用Hibernate,我想执行以下查询:

SELECT e FROM Posicao e WHERE e.id IN (SELECT DISTINCT p.papel FROM Posicao p)

但我得到以下信息:

HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. ********** Error **********

ERROR: operator does not exist: integer = character varying

我相信它缺少施法命令,但我想不出来。我的列id由整数组成,而其他列id由VARCHAR组成

例如,当我用e.papel更改e.id时,效果很好,但这不是我想要的

有人知道怎么修吗


共 (1) 个答案

  1. # 1 楼答案

    你可以选择:

    select e from Posicao e where e.id in (select p.papel::int from Posicao p)
    

    并不是说我删除了distinct,这在in中是不必要的。不过,你的问题的目的仍然相当不清楚。无论如何,我建议使用exists而不是in,因为许多数据库倾向于更好地优化它:

    select e 
    from posicao p
    where exists (select 1 from posicao p1 where p1.papel::int = p.id)