Java 元素集合不是延迟加载数据
我的对象具有元素集合列表:Java 元素集合不是延迟加载数据,java,spring-boot,jpa,spring-data-jpa,Java,Spring Boot,Jpa,Spring Data Jpa,我的对象具有元素集合列表: public class AppUser { @ElementCollection(fetch = FetchType.LAZY) private Set<Long> appsAndGamesWishList = new HashSet<>(); @ElementCollection(fetch = FetchType.LAZY) private Set<Long> ebookWishLis
public class AppUser {
@ElementCollection(fetch = FetchType.LAZY)
private Set<Long> appsAndGamesWishList = new HashSet<>();
@ElementCollection(fetch = FetchType.LAZY)
private Set<Long> ebookWishList = new HashSet<>();
@ElementCollection(fetch = FetchType.LAZY)
private Set<Long> appsAndGamesInstalled = new HashSet<>();
@ElementCollection(fetch = FetchType.LAZY)
private Set<Long> ebooksInstalled = new HashSet<>();
}
但是,当我想使用findById存储库获取数据时,我在响应中有四个列表。
只有这两张单子我怎么办
提前谢谢。您返回的是
可选的但要求的是列表
,请为您的问题提供一些上下文。@code\u可选对象包含我想要的列表我在回复中有四个列表
您如何检查?当您检查实体是否有列表时,Hibernate可能会加载它们。在调用findById
@Raj后,您可以添加一个调试检查点并检查它是否具有所有列表吗?我使用调试器检查它。您返回可选的
,但要求列表
,请为您的问题提供一些上下文。@code\u可选对象包含我想要的列表我在回复中有四个列表
您如何检查?当您检查实体是否有列表时,Hibernate可能会加载它们。在调用findById
@Raj之后,您可以添加一个调试检查点并检查它是否具有所有列表吗?我使用调试器来检查它。
@Query(value = "SELECT a FROM AppUser a "
+ "LEFT JOIN FETCH a.appsAndGamesWishList "
+ "LEFT JOIN FETCH a.ebookWishList "
+ "where a.id = (:appUser)")
Optional<AppUser> findById(@Param("appUser") String appUser);