当我删除一个子对象时,我的父对象是否也会在hibernate中被删除?

时间:2013-12-04 07:54:35

标签: hibernate

我正在使用Hibernate,当我删除我的子对象时,我的父对象也被删除了,请检查下面的代码。

@Entity
public class User
{
     @Id
@GeneratedValue
@Column(name = "FLD_USER_ID")
private Long userId;
   @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
private java.util.List<UserProfileEx> userProfileEx = new ArrayList<UserProfileEx();

}
 @Entity
  @Table(name="TBL_STD_USERPROFILEEX")
    public class UserProfileEx implements Serializable {
     @Id
 @GeneratedValue
 @Column(name="FLD_FIELD_ID")
 private Long userProfileExId;
    @ManyToOne
private UserProfile userProfile;
 }

MyDelete代码

    @Override
   public void delete(T classObj, Integer id) {
      T entity = get(classObj, id);
      if (entity != null)
      getHibernateTemplate().delete(entity);
     }

MyLogic

 I have UserProfileEx object here with id=1
 Now I am calling my delete method like this
  delete(UserProfileExObj,1);

它从childtable中删除了同时删除的父表对象也任何一个帮助我..

1 个答案:

答案 0 :(得分:0)

cascade属性设置为cascade=CascadeType.ALL,表示操作(保存,删除,更新,逐出,锁定,复制,合并,持久)将级联到映射。

CascadeType=ALL意味着,如果你进行操作,它们都是操作(保存,删除,更新,逐出,锁定,复制,合并,持久),它将被级联到所有关系。如果删除对象,其他对象也将被删除。

如果您不需要任何级联操作,则设置id无cascade=CascadeType.NONE,这样其他对象就不会生效。

您应该选择合适的级联类型。

请参阅doc以了解更多级联类型。

另见

Enum CascadeType