jpa中多对多关系的替代方式

时间:2011-03-17 11:20:12

标签: hibernate jpa many-to-many

如何在不使用jpa @manytomany注释的情况下编写具有多对多关系的代码?例如,两个类软件标签。当我删除标签 - 它删除所有软件。我尝试使用各种方法使用@manytomany注释来执行此操作,但它不起作用。我在这个网站上看到了与我的问题类似的内容,但是任何代码都提供了代码示例。 (我想两边都应该是@OneToMany关系,但是拿一个代码会很棒。

或者如果可能的话,如何使用@manytomany

更多信息:如果我们有soft1,soft2< - > tag1和soft2< - > tag2,我们删除tag1,然后只删除soft1。 hibernate可以处理吗?

1 个答案:

答案 0 :(得分:0)

尝试

@org.hibernate.annotations.Cascade(
   {org.hibernate.annotations.CascadeType.PERSIST, 
    org.hibernate.annotations.CascadeType.MERGE, 
    org.hibernate.annotations.CascadeType.REFRESH, 
    org.hibernate.annotations.CascadeType.DETACH, 
    org.hibernate.annotations.CascadeType.DELETE_ORPHAN}
)

这是从级联中删除org.hibernate.annotations.CascadeType.REMOVE以避免以下情况

  • 您删除ID为5
  • 的软件
  • hibernate删除ID为5和7
  • 的标签
  • 所有标记有这些ID的软件行都会被删除,级联会再次启动,因此您最终可能会得到一个空数据库。