cascade = CascadeType.REMOVE,及联删除无效果

service服务类删除方法如下

@Transactional(rollbackFor = Exception.class)

public void removeUnionAllMember(int roomId){

//通过query语句删除记录,

// 即使设置了cascade = CascadeType.REMOVE及联删除权限,

// 也无效果,只会删除主类,子类不会删除;因为query执行是直接在mysql层面执行crud操作,不涉及及联相关;

unionMemberDao.deleteUnionAllMemberBy(roomId);

//设置了cascade = CascadeType.REMOVE

//通过jpa自带的delete、deleteAll接口方法,

// 删除主实体类,

// 可以及联删除子类;因为jpa自带了及联相关处理

// unionMemberDao.delete(unionMemberDao.getTbUnionmemberHeaderBy(roomId,2));

}

//query语句

//删除所有成员

@Transactional(propagation = Propagation.REQUIRED)

@Modifying(clearAutomatically = true,flushAutomatically = true)

@Query(value = "delete FROM TbUnionmember s " +

"where s.roomid = ?1 ")

Integer deleteUnionAllMemberBy(int roomid);

service服务类删除方法如下 @Transactional(rollbackFor = Exception.class) public void removeUnionAllMember(int roomId){ //通过query语句删除记录, // 即使设置了cascade = CascadeType.REMOVE及联删除权限, // 也无效果,只会删除主类,子类不会删除;因为query执行是直接在mysql层面执行crud操作,不涉及及联相关; unionMemberDao.deleteUnionAllMemberBy(roomId); //设置了cascade = CascadeType.REMOVE //通过jpa自带的delete、deleteAll接口方法, // 删除主实体类, // 可以及联删除子类;因为jpa自带了及联相关处理 // unionMemberDao.delete(unionMemberDao.getTbUnionmemberHeaderBy(roomId,2)); } //query语句 //删除所有成员 @Transactional(propagation = Propagation.REQUIRED) @Modifying(clearAutomatically = true,flushAutomatically = true) @Query(value = "delete FROM TbUnionmember s " + "where s.roomid = ?1 ") Integer deleteUnionAllMemberBy(int roomid);
经验分享 程序员 微信小程序 职场和发展