Java Hibernate ManyToMany阻止实体删除时删除关联

Java Hibernate ManyToMany阻止实体删除时删除关联,java,hibernate,Java,Hibernate,我试图删除实体而不删除多对多关系(不是引用的实体!) 由于文件原因,这是一个有效的删除 参见示例169: 只需删除父端,Hibernate就可以安全地删除关联的链接记录,如以下示例所示: 例169。单向@ManyToMany实体删除 Person person1 = entityManager.find( Person.class, personId ); entityManager.remove( person1 ); DELETE FROM Person_Address WHERE P

我试图删除实体而不删除多对多关系(不是引用的实体!)

由于文件原因,这是一个有效的删除

参见示例169:

只需删除父端,Hibernate就可以安全地删除关联的链接记录,如以下示例所示: 例169。单向@ManyToMany实体删除

Person person1 = entityManager.find( Person.class, personId );
entityManager.remove( person1 );

DELETE FROM Person_Address
WHERE  Person_id = 1

DELETE FROM Person
WHERE  id = 1
我的目标是,如果删除了具有现有mtm集合项的实体,则会出现约束冲突。My DB在m-to-m表中有关于DELETE的限制,但由于执行了person_id DELETE,所以从未到达该限制

我看到了不同的可能方法:

  • 将许多anno更改为一个OMANY。但是,对于JoinTable集合,仍然会生成关联删除(为什么?)
  • 防止此类行为/力约束的一些注释

  • 我不确定我是否遵循了这一部分:“我希望这些数据是严格只读的!它是从“引用实体”插入、删除和管理的。为什么它不是关联的反面呢?@crizzis,面对面实体,我想查看附加的数据。数据的实体包含PersonToData对象的集合(由两个链接和额外数据组成),该对象被保存并级联。我不想要PersonToData对象,只是直接收集数据。我在readonly purpouse中需要它,它工作正常,在调用Delete之前,在
    Person.data
    上放置
    @Immutable
    delete 
    from
        person_to_data
    where
        person_id=?
        
    delete 
    from
        person 
    where
        id=?
    
    Person person1 = entityManager.find( Person.class, personId );
    entityManager.remove( person1 );
    
    DELETE FROM Person_Address
    WHERE  Person_id = 1
    
    DELETE FROM Person
    WHERE  id = 1