JPA中的动态级联类型

时间:2015-09-11 12:25:47

标签: java jpa cascade

我在我的应用程序中使用JPA,并以一个模型为例:

public class Project {
    @Id
    private String uuid;
    private String name;

    .................

    @OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
    private List<ProjectDetails> details;
}

如图所示,one-to-manyProject之间存在ProjectDetail关联,一旦项目被提取,其详细信息将由jpa提供者填充,这正是我所知道的想。

但是,一旦将认证添加到项目中,详细信息将仅对指定用户可用,这意味着不需要自动提取details

我知道我可以使用

project.setDetails(null);

删除应用程序级别中未经身份验证的用户的details信息。但我不知道这是否浪费了sql资源?因此,如果我可以在运行时设置级联类型会更好。

你如何解决这类问题?

1 个答案:

答案 0 :(得分:0)

默认情况下,由于@OneToMany关系是延迟加载的,如果用户尚未经过身份验证,则可能无法从代码中访问getter,从而阻止加载关系。

当实体最终被加载时,我认为您应该决定从应用程序做什么,而不是将关系设置为null。