【发布时间】:2009-08-19 11:54:21
【问题描述】:
我有 2 个实体:User 和 UsersList。
@Entity
@Table(name = "USERS")
public class User {
@Id
@GeneratedValue
@Column(name = "ID")
private Long id;
@ManyToMany(cascade = CascadeType.REMOVE, mappedBy = "users")
private List<UsersList> usersLists = new ArrayList<UsersList>();
public List<UsersList> getUsersLists() {
return usersLists;
}
public void setUsersLists(List<UsersList> usersLists) {
this.usersLists = usersLists;
}
}
和
@Entity
@Table(name = "USERS_LIST")
public class UsersList {
@Id
@GeneratedValue
@Column(name = "ID")
private Long id;
@ManyToMany
private List<User> users = new ArrayList<User>();
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
和这样的代码:
// 1
List<User> dbUsers; // 3 the user instances are persisted in DB
UsersList usersList = new UsersList();
usersList.setUsers(dbUsers);
// 2 - now persist the usersList using hibernate...
saveWithHibernate(usersList);
//3 - delete using a persisted user
deleteWithHibernate(dbUsers.get(0).getId());
在哪里
deleteWithHibernate(Long id) {
User usr = hibernateTemplate.get(User.class, id);
hibernateTemplate.delete(usr);
}
在第 1 步中,我在 USERS (USER_ID) 表中有 3 行。
在第 2 步(第二条评论)之后,我在 USERS_LIST (USERS_LIST_ID) 表中有 1 行,在连接表 USERS_LIST_USERS (USER_ID, USERS_LIST_ID) 中有 3 行。
我想在第 3 步中实现以下目标:当我从表 USERS 中删除一个用户时 - 假设 USER_ID = 4 的用户,我只想从连接表中删除 USER_ID = 4 的行,和其他人留下来。
我的问题有注释解决方案吗?
【问题讨论】:
-
deleteWithHibernate 方法是什么样的?
标签: hibernate annotations many-to-many