Branch oldbranch = manager.find(Branch.class, oldBranchId);
Branch newbranch = manager.find(Branch.class, newBranchId);
User user = manager.find(User.class, userID);
try {
Collection<User> users = newbranch.getUsers();
Collection<Branch> branchs = user.getBranchs();
if (users == null) {
users = new ArrayList<User>();
}
if (branchs == null) {
branchs = new ArrayList<Branch>();
}
if (branchs.contains(oldbranch)) {
branchs.remove(oldbranch);
}
if(!branchs.contains(newbranch))
branchs.add(newbranch);
if (users.contains(user)) {
users.remove(user);
}
else
users.add(user);
newbranch.setUsers(users);
user.setBranchs(branchs);
} catch (RuntimeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
但上面的EJB代码写错的时候,如下所示:
// Branch oldbranch = manager.find(Branch.class, oldBranchId);
// User user = manager.find(User.class, userID);
//
// Collection<User> users = oldbranch.getUsers();
// Collection<Branch> branchs = user.getBranchs();
//
// if (users == null) {
// users = new ArrayList<User>();
// }
//
// if (branchs == null) {
// branchs = new ArrayList<Branch>();
// }
// if (!branchs.contains(oldbranch)) {
// branchs.remove(oldbranch);
// }
// if (!users.contains(user)) {
// users.remove(user);
// }
//
// oldbranch.setUsers(users);
// user.setBranchs(branchs);
// }
会导致数据库 约束冲突。主键不唯一的错发生:但是通过JUNIT测试报的错却是:
undeclareMethod
本文探讨了一段错误的EJB代码导致的数据库约束冲突问题,并通过对比正确的代码实现来解析如何避免主键不唯一等错误。文章还涉及了在进行用户与分支关系更新时可能出现的异常情况。
9356

被折叠的 条评论
为什么被折叠?



