在我们的领域模型中,我们有
@Entity
@SequenceGenerator(name = "wordlist_seq", sequenceName = "wordlist_seq")
public class QuestionSet {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "wordlist_seq")
private Long id;
@OneToMany(cascade = CascadeType.ALL)
private List<Question> questions;
并且我想编写一个查询来获取集合QuestionSet
中至少有一个与谓词匹配的问题的所有实例,而且我只想在questions
集合中包含匹配IN
的那些问题questions
。
这是我写的查询:
SELECT s FROM QuestionSet s JOIN s.questions q WHERE q IN (SELECT ar.question FROM AppointedRepetition ar WHERE ar.date < :tomorrow)
date 是DateTime
来自 joda-time 库的类型,我将其设置为:
query.setParameter("tomorrow", DateTime.now().plusDays(1))
现在这部分工作,我只得到那些QuestionSets
被正确匹配的问题,但我也得到了所有问题,即使例如只有一个问题与IN
.
我的期望太高还是有什么方法可以限制questions
列表中的实例数量?