我在我的应用程序中使用JPA,并以一个模型为例:
public class Project {
@Id
private String uuid;
private String name;
.................
@OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
private List<ProjectDetails> details;
}
如图所示,one-to-many
和Project
之间存在ProjectDetail
关联,一旦项目被提取,其详细信息将由jpa提供者填充,这正是我所知道的想。
但是,一旦将认证添加到项目中,详细信息将仅对指定用户可用,这意味着不需要自动提取details
。
我知道我可以使用
project.setDetails(null);
删除应用程序级别中未经身份验证的用户的details
信息。但我不知道这是否浪费了sql资源?因此,如果我可以在运行时设置级联类型会更好。
你如何解决这类问题?
答案 0 :(得分:0)
默认情况下,由于@OneToMany关系是延迟加载的,如果用户尚未经过身份验证,则可能无法从代码中访问getter,从而阻止加载关系。
当实体最终被加载时,我认为您应该决定从应用程序做什么,而不是将关系设置为null。