Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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 根据具体情况使用CascadeType.MERGE和CascadeType.PERSIST_Java_Spring_Hibernate_Jpa_Cascade - Fatal编程技术网

Java 根据具体情况使用CascadeType.MERGE和CascadeType.PERSIST

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

我想知道是否可以通过使用JPA注释和Spring数据的Crudepository来解决以下问题

每个请求都会新创建以下实体:

@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
的过时数据)