gpt4 book ai didi

java - Spring Data 有条件地获取 child

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:31:45 24 4
gpt4 key购买 nike

我读过 Spring Data JPARepository: How to conditionally fetch children entites .但我想使用方便的 JPA 注释而不是手动加入所有子项。

假设我有以下模型:

@Entity
public class UserModel extends BaseModel<User> {

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<CredentialModel> credentialList = new ArrayList<>();

@ManyToMany
@JoinTable(
name = "users_actions",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "action_id", referencedColumnName = "id")
)
private List<ActionMode> actionList = new ArrayList<>();
}

获取 credentialListactionList 可能是一项耗时的操作(加入获取等)。我不想自动获取 credentialListactionList 。但是当我访问它们时,我希望它们是一个空列表而不是 LazyInitializationException

即使我没有在 @Query 中特别JOIN FETCH,我也可以使用这些字段吗?将其保留为空列表即可。

如果没有,是否有办法实现同样的需求?

最佳答案

返回空集合会导致一个问题:您无法区分真正空的集合和只是没有延迟加载的集合。您可以在通过 org.hibernate.Hibernate.isInitialized(...)PersistenceUnitUtil#isLoaded(...) 在 JPA2 中。

不过我建议您此时使用 Data-Transfer-Objects。对于不需要集合的特殊用例,只需构建一个没有那些不必要属性的实体的类似副本。当然,您的 DTO 构建必须在公开 session 中完成。

关于java - Spring Data 有条件地获取 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42609062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com