gpt4 book ai didi

jpa - jpql - 在一对多集合中选择一些元素

转载 作者:行者123 更新时间:2023-12-02 07:35:39 25 4
gpt4 key购买 nike

在我们的领域模型中我们有

@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 是来自 joda-time 库的 DateTime 类型,我这样设置它:

query.setParameter("tomorrow", DateTime.now().plusDays(1))

现在这部分工作了,我只得到那些正确匹配的 QuestionSets,但我也得到了所有的问题,即使,例如只有其中一个被 匹配>在

是我的期望太高还是有什么方法可以限制问题列表中的实例数量?

最佳答案

没有。 JPA 不会返回与数据库实际情况不匹配的实体。如果 QuestionSet 在数据库中有 4 个问题,则 QuestionSet 实体将有 4 个问题。

如果您只想问一些问题,请选择您感兴趣的问题,然后导航到他们的问题集。

或者执行如下查询,将返回匹配的题集,以及匹配的题目:

 SELECT s, q FROM QuestionSet s JOIN s.questions q WHERE ...

关于jpa - jpql - 在一对多集合中选择一些元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16886279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com