hibernate CascadeType属性说明

hibernate CascadeType属性说明

cascade属性: 指定级联操作的行为(可多选)

  • CascadeType.PERSIST 级联新增(又称级联保存)
    获取A对象里也同时也重新获取最新的B时的对象。即会重新查询数据库里的最新数据,并且,只有A类新增时,会级联B对象新增。若B对象在数据库存(跟新)在则抛异常(让B变为持久态),对应EntityManager的presist方法,调用JPA规范中的persist(),不适用于Hibernate的save()方法
  • CascadeType.MERGE 级联合并(又称级联更新)
    指A类新增或者变化,会级联B对象(新增或者变化) ,对应EntityManager的merge方法,调用JPA规范中merge()时,不适用于Hibernate的update()方法
  • CascadeType.REMOVE 级联删除
    只有A类删除时,会级联删除B类,即在设置的那一端进行删除时,另一端才会级联删除,对应EntityManager的remove方法,调用JPA规范中的remove()时,适用于Hibernate的delete()方法
  • CascadeType.REFRESH 级联刷新
    获取order(一或多)对象里也同时也重新获取最新的items(多)的对象,对应EntityManager的refresh(object),调用JPA规范中的refresh()时,适用于Hibernate的flush()方法
  • CascadeType.ALL
    包含所有持久化方法

综上:大多数情况用CascadeType.MERGE就能达到级联跟新又不报错,用CascadeType.ALL时要斟酌下CascadeType.REMOVE

举个栗子
多的一方:
多的一方

少的一方:
少的一方

猜你喜欢

转载自blog.csdn.net/qq_32953079/article/details/53858728
今日推荐