一对多查询集合
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;
}
我想得到所有Accounts
为User
,它的工作原理,但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多表查询:一对一(resultmapassociation匹配)一对多(collection集合)多对多(中间表)