原因可能会有比较多吧
我的原因是Transaction 出现了嵌套
public Studio createStudio(User creator, StudioCreateForm createForm)
throws CreateStudioException {
int userCouldCreateNum = creator.getCreateStudioNum();
if (userCouldCreateNum > 0) {
userCouldCreateNum--;
creator.setCreateStudioNum(userCouldCreateNum);
} else {
throw new CreateStudioException();// 不能创建Studio了
}
Studio newStudio = new Studio();
newStudio.setCreateDate(new Date());
newStudio.setDescribe(createForm.getDescribe());
newStudio.setStudioName(createForm.getStudioName());
studioDAO.beginTransaction();
studioDAO.save(newStudio);
studioDAO.commitTransaciton();
Member member = addMember(newStudio, creator);//这个句不能放在 studioDAO.commitTransaciton();前 因为addMember中有beginTransaction();
newStudio.setCreator(member);// 说明创建者
// 给创建者加满权限
return newStudio;
}