我正在使用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中删除了同时删除的父表对象也任何一个帮助我..
答案 0 :(得分:0)
cascade属性设置为cascade=CascadeType.ALL
,表示操作(保存,删除,更新,逐出,锁定,复制,合并,持久)将级联到映射。
CascadeType=ALL
意味着,如果你进行操作,它们都是操作(保存,删除,更新,逐出,锁定,复制,合并,持久),它将被级联到所有关系。如果删除对象,其他对象也将被删除。
如果您不需要任何级联操作,则设置id无cascade=CascadeType.NONE
,这样其他对象就不会生效。
您应该选择合适的级联类型。
请参阅doc以了解更多级联类型。
另见