JPA 操作数据库,在级联关系中,会遇到如下问题:
nested exception is java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST
解决方法: 在@OneToMany 或 @ManyToOne 或 @ManyToMany 初加上 cascade={CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.REFRESH}
如:
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE,CascadeType.REFRESH })
@JoinTable(name = "RECORD_RECORDER", joinColumns = { @JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID") }, inverseJoinColumns = { @JoinColumn(name = "RECORD_ID", referencedColumnName = "RECORD_ID") })
private List<Record> recorderRecords;

本文探讨了在使用JPA操作数据库时遇到的级联关系同步问题,特别是当通过关系找到新对象时引发的非法状态异常。提供了解决方法,即在@OneToMany、@ManyToOne或@ManyToMany注解中添加cascade属性,具体包括Persist、Merge和Refresh等选项,以确保级联操作的正确执行。
1535

被折叠的 条评论
为什么被折叠?



