首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询具有嵌套集合的实体的正确方法?

问查询具有嵌套集合的实体的正确方法?
EN

Stack Overflow用户
提问于 2013-04-08 17:01:05
回答 1查看 2.4K关注 0票数 1

当集合元素有自己的集合时,基本查询看起来不起作用。

设想一家银行的数据模型,其中有客户,这些客户有投资组合。获得客户的正确方法是什么?

我试过这个:

代码语言:javascript
复制
@Query("SELECT DISTINCT c FROM Customer c LEFT JOIN FETCH c.portfolios")

但它失败了,并显示“懒惰地初始化角色集合失败”。

投资定义为:

代码语言:javascript
复制
@ManyToMany(cascade = CascadeType.ALL)

如果我更改fecthType,查询将会起作用:

代码语言:javascript
复制
@ManyToMany(cascade = CascadeType.ALL, fetch=FetchType.EAGER)

但是有没有一种方法可以让它在不改变fetchtype的情况下工作呢?

编辑:

值得一提的是,我使用了Spring的JpaRepository来定义上述查询。所有实体都有自己的存储库,但看起来获取客户并不涉及投资组合存储库中的任何方法(这将留下加入投资),因此投资永远不会获取。

此外,我可以使用类似的查询来获取投资组合,它工作得很好,因为投资没有任何集合。但获取->投资的连锁客户->投资组合失败了。

EN

回答 1

Stack Overflow用户

发布于 2013-04-08 21:43:09

您的查询使用left join fetch选择客户并获取他们的投资组合。如果您还想获取投资组合的投资,则需要一个额外的join fetch,就像在SQL中一样:

代码语言:javascript
复制
select distinct c FROM Customer c 
left join fetch c.portfolios portfolio
left join fetch portfolio.investments
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15875142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档