【发布时间】:2020-02-18 01:55:38
【问题描述】:
例如,我有一个处于休眠状态的用户实体,其中包含以下 2 个字段:
@Entity
@Table(name = "user")
public class User {
@OneToMany(fetch = FetchType.LAZY)
@JsonIgnore
private Set<User> addedUsers;
@OneToMany(fetch = FetchType.LAZY)
@JsonIgnore
private Set<User> wantToAdd;
}
addedUsers 适用于同意彼此匹配的 2 个人,而 wantToAdd 适用于向其他用户发送好友请求但尚未收到回复的用户。
这是我使用的一系列查询:(假设有 3 个用户 a、b、c)
a add b -> good
a add c -> good
b add c -> failed
现在它给出了
"java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1' for key 'UK_4l1fmdm138stci88r2ht2ggff'" 错误。
Table in MySQL workbench
似乎 want_to_match_id 不允许重复。如何解决这个问题?
我也认为它不利于用户引用自身,但我不知道我该怎么做。
【问题讨论】:
-
那么为什么在同一个实体类中使用实体类作为列? -- 不行!
标签: java database hibernate spring-boot jpa