使用querydsl,如何从一个一对多的关系中的一组对象中检查特定对象?

17

我有一个Person实体,我的Person有多个地址(从Person到Address的OneToMany关系)。 我想能够查询所有具有特定邮政编码的人,但是在查看querydsl文档后,我不确定如何正确处理集合。

我可以访问地址,但不确定该怎么处理它们:

QPerson qPerson = QPerson.person;
personDao.findAll(qPerson.addresses._SPECIFICADDRESS_.zip.eq('73130'));

我如何获取我要查找的SPECIFICADDRESS

1个回答

30

试试这个

QPerson qPerson = QPerson.person;
personDao.findAll(qPerson.addresses.any().zip.eq('73130'));

看起来太简单了...回到终端后会尝试一下。谢谢! - codeLes
这太棒了。现在让我感到困扰的是,我必须在一堆集合中更加具体地进行操作......不过,这真的很有趣。感谢您的帮助。 - codeLes
您可以使用显式子查询来表达更深层次的结构。any()会在内部创建这些子查询,对于简单的结构,它是一个很好的替代方案。 - Timo Westkämper
1
你能分享一个子查询的例子吗?在上面的例子中,我需要检查两个参数而不仅仅是一个参数zip。例如:where zip = '73130' and stdCode = '0028'?我尝试使用子查询,但无法执行它。 - coretechie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接