Java 根据具体情况使用CascadeType.MERGE和CascadeType.PERSIST
我想知道是否可以通过使用JPA注释和Spring数据的Crudepository来解决以下问题 每个请求都会新创建以下实体:Java 根据具体情况使用CascadeType.MERGE和CascadeType.PERSIST,java,spring,hibernate,jpa,cascade,Java,Spring,Hibernate,Jpa,Cascade,我想知道是否可以通过使用JPA注释和Spring数据的Crudepository来解决以下问题 每个请求都会新创建以下实体: @Entity @Table(name = "my_entity") public class MyEntityDAO { .... @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST) @JoinColumn(name = "my_referenced_entity
@Entity
@Table(name = "my_entity")
public class MyEntityDAO {
....
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
@JoinColumn(name = "my_referenced_entity_id")
@JsonBackReference
private MyReferencedEntityDAO myReferencedEntity;
....
}
Crudepository使用存储实体及其引用的元素
myEntityRepository.save(myEntityDAO);
问题是,这只适用于新创建的引用(MyReferencedEntity)实体。在某些情况下,这是需要的,但有时此引用的实体将已经存在,从而导致传递的:分离实体持续存在
当我设定
CascadeType.MERGE
它适用于实体存在的情况,但在需要创建新实体时失败
有没有办法不使用.persist()和.merge()方法以编程方式处理此操作而使其正常工作?我已经尝试通过注释添加这两个CascadeType,但它确实导致了相同的错误。FYI您可以使用CascadeType.ALL…请注意,使用
CascadeType.ALL
,您可能会意外地将现有的MyReferencedEntityDAO
更新为不需要的状态(例如,如果更新请求包含mrreferencedentitydao
的过时数据)