Java 如何从hibernate查询中使用;在; 列出奖品= sessionProvider.getCurrentSession().createQuery(“从id位于(:id)中的奖品) .setParameterList(“ids”,prizeIds).list();

Java 如何从hibernate查询中使用;在; 列出奖品= sessionProvider.getCurrentSession().createQuery(“从id位于(:id)中的奖品) .setParameterList(“ids”,prizeIds).list();,java,hibernate,Java,Hibernate,我有一个奖项的名单,这不是唯一的。我需要为每个id获取奖励对象。但hibernate只返回唯一元素列表。如何获得与输入列表相同大小的列表。更新:集合中有多个ID的内容会改变内容。当然Hibernate正在做他的工作,所以你必须找到另一个解决方案 正确回答这个问题:使用“in”不可能得到不明显的结果。您得到的答案是数据库中“in”函数的默认功能。使用exist或not exist子句检索每个id的记录。我怀疑您是否也可以使用exist或not exists 但是,请确保您正在尝试实现的功能,这在大

我有一个奖项的名单,这不是唯一的。我需要为每个id获取奖励对象。但hibernate只返回唯一元素列表。如何获得与输入列表相同大小的列表。

更新:集合中有多个ID的内容会改变内容。当然Hibernate正在做他的工作,所以你必须找到另一个解决方案


正确回答这个问题:使用“in”不可能得到不明显的结果。

您得到的答案是数据库中“in”函数的默认功能。使用exist或not exist子句检索每个id的记录。我怀疑您是否也可以使用exist或not exists


但是,请确保您正在尝试实现的功能,这在大多数应用程序中并不常见

id不是唯一的???吓唬我,老兄!!。目前有点可疑,请澄清。表中的ID是唯一的。但我传递的列表(PrizeID)将多次包含同一id。您可以迭代id列表,从当前会话中获取结果,并将这些对象添加到返回列表中。我正在寻找直接查询。。但我认为这是去gono的唯一途径,我的身份证列表不清楚。如;prizeIds={1,3,2,1,1,4},为此我需要包含{P1,P3,P2,P1,P1,P4}的奖品对象列表。但是hibernate返回给我的是{P1,P2,P3,P4}
List<Prize> prizes =
                sessionProvider.getCurrentSession().createQuery("from Prize where id in (:ids)")
                        .setParameterList("ids", prizeIds).list();