Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Hibernate 对@ManyToMany关系进行不必要的删除_Hibernate_Jpa_Ejb_Many To Many_Cascade - Fatal编程技术网

Hibernate 对@ManyToMany关系进行不必要的删除

Hibernate 对@ManyToMany关系进行不必要的删除,hibernate,jpa,ejb,many-to-many,cascade,Hibernate,Jpa,Ejb,Many To Many,Cascade,我有两个实体: @Entity public class Entity1 { @Id @Column(name="ID_ENTITY_1") private Integer id; @OneToMany(mappedBy="entity1", cascade={CascadeType.PERSIST}) private List<Entity2> list; @ManyToMany @JoinTable(

我有两个实体:

@Entity
public class Entity1 {

    @Id
    @Column(name="ID_ENTITY_1")
    private Integer id;

    @OneToMany(mappedBy="entity1", cascade={CascadeType.PERSIST})
    private List<Entity2> list;


    @ManyToMany
    @JoinTable(
        schema="schema",
        name="V_OTHER_RELATIONSHIP", 
        joinColumns={@JoinColumn(name="ID_ENTITY_1", insertable=false, updatable=false)}, 
        inverseJoinColumns={
            @JoinColumn(
                name="ID_ENTITY_2",
                referencedColumnName="ID_ENTITY_2",
                insertable=false, updatable=false
            )
        }
    )

    //getters and setters
}

@Entity
public class Entity2 {

    @Id
    @Column(name="ID_ENTITY_2")
    private Integer id;

    @ManyToOne
    @JoinColumn(name="ID_ENTITY_1)
    private Entity1 entity1;

    //getters e setters.
}
@实体
公共类实体1{
@身份证
@列(name=“ID\u实体\u 1”)
私有整数id;
@OneToMany(mappedBy=“entity1”,cascade={CascadeType.PERSIST})
私人名单;
@许多
@可接合(
schema=“schema”,
name=“V_其他关系”,
joinColumns={@JoinColumn(name=“ID_ENTITY_1”,insertable=false,updateable=false)},
反向连接柱={
@连接柱(
name=“ID\u实体\u 2”,
referencedColumnName=“ID\u实体\u 2”,
可插入=false,可更新=false
)
}
)
//接球手和接球手
}
@实体
公共类实体2{
@身份证
@列(name=“ID\u实体\u 2”)
私有整数id;
@许多酮
@JoinColumn(name=“ID\u ENTITY\u 1)
私人实体1实体1;
//能手和二传手。
}
请注意,@ManyToMany关系中不存在通过V_OTHER_关系的级联

但是,当我在Entity1上执行一次删除时,首先发生的是V_OTHER_关系中的一次删除,该删除会导致错误,因为它是只读的


帮助我。

我不明白,如果数据库中有引用Entity1的内容,您就不能删除它,那么通过联接表建立的这种关系如何工作呢?如果您希望联接表中的条目在引用实体被删除后继续存在,则联接表应该映射为一个实体。对Entity1的引用是一个视图。I do不希望在视图中删除(V_其他_关系)。对,那么它就不是联接表了。因为它不是联接表,并且您希望它存在于Entity1 Entity2关系之外,所以您应该将它映射为一个实体。Entity1 V_其他_关系_实体Entity2我不明白,如果数据库中有引用它的内容,您就不能删除Entity1,那么如何通过联接表有效吗?如果希望联接表中的条目在删除引用实体后继续存在,则应将联接表映射为实体。对Entity1的引用是一个视图。我不希望在视图中删除(V_其他_关系)。对,那么它就不是联接表。因为它不是联接表,并且您希望它存在于Entity1 Entity2关系之外,所以应该将其映射为实体。Entity1 V_其他_关系_实体Entity2