Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA中的动态级联类型_Java_Jpa_Cascade - Fatal编程技术网

Java JPA中的动态级联类型

Java JPA中的动态级联类型,java,jpa,cascade,Java,Jpa,Cascade,我在我的应用程序中使用JPA,以一个模型为例: public class Project { @Id private String uuid; private String name; ................. @OneToMany(mappedBy = "project", cascade = CascadeType.ALL) private List<ProjectDetails> details; } 在应用程序级

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

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

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

    @OneToMany(mappedBy = "project", cascade = CascadeType.ALL)
    private List<ProjectDetails> details;
}
在应用程序级别删除未经身份验证用户的
详细信息
信息。但我想知道这是否浪费了sql资源?因此,如果我可以在运行时设置级联类型就更好了


如何解决此类问题?

默认情况下,由于@OneToMany关系是延迟加载的,如果用户尚未通过身份验证,则不一定要从代码中访问getter,从而阻止加载关系


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

Cascade将控制对主实体的更改是否会传播到相关实体(如果在提交父项时提交新的关联实体,如果在合并父项时传播对关联实体的更改等).OneToMany应该延迟加载,这意味着它将仅在调用getter时加载。也许您可以使用另一个方法包装getter,并且仅在身份验证允许的情况下调用getter,否则将返回null。
project.setDetails(null);