Доброго времени суток, товарищи =) Помогите разрешить проблему с Hibernate?) Или со структурой так сказать...?
Есть сущность User, у которой есть таблица, содержащая сущность User_Friends, в которой 2 ссылки на пользователя.
| Код | @ManyToMany(cascade = CascadeType.ALL, targetEntity = UserFriends.class) private Set<UserFriends> friends = new HashSet<UserFriends>();
|
| Код | @Entity @Table(name = "USER_FRIENDS") public class UserFriends implements Serializable {
private static final long serialVersionUID = -8267560794720819507L;
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "USER_FRIENDS_ID", nullable = true) private Long id;
@ManyToOne() @JoinColumn(name = "USER_ID1", referencedColumnName = "USER_ID") private User user1;
@ManyToOne() @JoinColumn(name = "USER_ID2", referencedColumnName = "USER_ID") private User user2;
|
Удаляю пользователя из друзей таким образом.
| Код | @SuppressWarnings("unchecked") @Override public void removeFriend(User user, Long friendId) throws Exception { Long userId = user.getId(); List<UserFriends> resultList = hibernateTemplate .find("from UserFriends as friends where friends.user1.id='" + userId + "' or friends.user2.id='" + userId + "' and friends.user2.id='" + friendId + "' or friends.user1.id='" + friendId + "'"); if (!resultList.isEmpty()) { hibernateTemplate.delete(resultList.get(0));
} else throw new Exception(); }
|
Проблема: когда удаляю пользователя, он не удаляется. Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`socio`.`user_user_friends`, CONSTRAINT `FKBBEEACF5CB72EE3F` FOREIGN KEY (`friends_USER_FRIENDS_ID`) REFERENCES `user_friends` (`USER_FRIENDS_ID`))
А если ставлю так
| Код | @ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "USER_ID1", referencedColumnName = "USER_ID") private User user1;
@ManyToOne(cascade = CascadeType.ALL) @JoinColumn(name = "USER_ID2", referencedColumnName = "USER_ID") private User user2;
|
то удаляется сразу все включая самих пользователей.
Суть вопроса: что нужно сделать, чтобы чтобы удалялась только UserFriends сущность? Или как лучше сконфигурировать друзей пользователя? |