一对多查询集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一对多查询集合相关的知识,希望对你有一定的参考价值。

我有一对多的关系:

public class Account{
  @OneToMany(cascade=CascadeType.ALL)
  private List<Transaction>transactions = new ArrayList<>();
}

public class Transaction{
    @ManyToOne
    @JoinColumn(name="ACCOUNT_ID")
    private Account account;
}

我想得到所有AccountsUser,它的工作原理,但Transaction列表是空的。这是实体映射的问题还是应该修改我的查询?

我开始(空交易清单):

TypedQuery<Account>query  = em.createQuery("SELECT a FROM Account a WHERE a.user.id = ?1",Account.class);

也试图像这样加入(根本没有账号):

 TypedQuery<Account>query  = em.createQuery("SELECT a FROM Account a JOIN a.transactions t WHERE a.user.id = ?1",Account.class);

这有什么不对?

答案

您似乎忘了在注释属性中添加mappedBy

@OneToMany(cascade=CascadeType.ALL, mappedBy="account")
private List<Transaction>transactions = new ArrayList<>();

以上是关于一对多查询集合的主要内容,如果未能解决你的问题,请参考以下文章

查询具有两个一对多集合的休眠实体

mybatis 查询一对多 集合中没有值为啥

mybatis--表关系之一对多

Mybatis -- Mybatis多表查询:一对一(resultmapassociation匹配)一对多(collection集合)多对多(中间表)

【Mybatis】collection一对多查询子查询集合不为空,但属性值为空

mybatis递归,一对多代码示例