我想知道是否可以仅通过使用JPA批注和Spring Data的CrudRepository来解决以下问题。
以下实体是根据每个请求新创建的:
@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;
....
}
CrudRepository正在使用来存储实体及其引用的元素。
myEntityRepository.save(myEntityDAO);
问题在于,这仅适用于新创建的引用(MyReferencedEntity)实体。在某些情况下,这是需要的,但有时此引用的实体将已经存在,从而导致:detached entity passed to persist
设置后
CascadeType.MERGE
适用于实体存在的情况,但是在需要创建一个新实体时会失败。
是否有一种无需使用.persist()和.merge()方法就可以通过编程方式处理此操作的方法?我已经尝试过通过注释添加两个CascadeType,但是确实会导致相同的错误。