Java JPA中的动态级联类型
我在我的应用程序中使用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; } 在应用程序级
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);