0
我有3個表:處於休眠刪除用戶實體的角色被刪除,以及
user: (id,username,password)
role: (id,role)
user_roles: (user_id, role_id)
和以下兩個Hibernate的實體:
用戶:
@Entity
@Table(name = "user")
public class User implements Serializable{
@Id
@GeneratedValue
private Long id;
private String userName;
private String password;
private boolean active = false;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "user_roles", joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") }, inverseJoinColumns = { @JoinColumn(name = "role_id", referencedColumnName = "id") })
private Set<Role> roles = new HashSet<Role>();
....
作用:
@Entity
@Table (name = "roles")
public class Role implements Serializable {
@Id @GeneratedValue
private Long id;
private String role;
....
當我現在刪除用戶時,相應的角色也會從「角色」表中刪除,而不是刪除用戶行和user_roles關係。即使其他用戶仍與該角色有關。我使用以下來刪除用戶。
@Transactional
public void deleteByName(String userName) {
User user = this.getByName(userName);
Session session = sessionFactory.getCurrentSession();
session.delete(user);
}
任何人都知道爲什麼以及如何解決這個問題?
謝謝
確保刪除cacade它不在數據庫上 – jcrada
我只是假設沒有,因爲級聯的行爲配置將是多餘的。如果刪除級聯消失,但級聯刪除仍然發生,我會查看數據庫。 – kostja
感謝您的回答,我只注意到我的問題是OneToMany關係。當我創建用戶時,我大多使用相同的角色。例如user1和user2的「USER_ROLE」。我可能需要一個ManyToMany關係。是對的嗎? – clausmc