JPQL多对多条件查询

时间:2012-06-03 20:18:21

标签: hibernate jpa jpa-2.0 jpql

我有两个实体:具有多对多关系的新闻和标签。新闻有一个日历字段。我有一些带有一些标签ID和日历的长片。我想得到所有Newses,它们至少有一个Tag在ids数组中指定,只有那些拥有更新的Calendar然后我拥有的那个。实现它的最佳方法是什么?提前谢谢。

3 个答案:

答案 0 :(得分:3)

select n from News n inner join n.tags tag
where tag.id in (:tagIds)
and n.theCalendarField > :calendarParam

答案 1 :(得分:3)

您未展示的内容是tagIds的类型。根据预期的消息,它是阵列。因为您要与Long进行比较,所以参数类型应为以下之一:long,Long或List<Long>

答案 2 :(得分:2)

JB Nizet和Mikko Maunu的综合答案:

SELECT DISTINCT n FROM News n INNER JOIN n.tags t
WHERE t.id IN (:tagIds) AND n.timestamp > :timestamp

它需要传递List,数组不会传递。