![](/img/trans.png)
[英]What is the best way to limit results using a DetachedCriteria of Hibernate in Java?
[英]What's the best way to model Friendship using Java Hibernate and JPA
假设我有一个 Person 实体。
一个人可以与一个或多个其他人建立“友谊”关系。
我会 model ,比如说,表中的一个条目
| Person Id 1 | Person Id 2 |
但是,从语义上讲,如果人 1 是人 2 的朋友
| Person Id 1 | Person Id 2 |
相当于说第 2 个人是第 1 个人的朋友
| Person Id 2 | Person Id 1 |
当然,在 Java 和查询中有很多方法,例如((person1=x AND person2=y) OR (person1=y AND person2=x))
我会确保这种等价性得到尊重。 但是,在数据库本身以及随后的存储库、JPQL 查询等中,model 的更有效方法是什么?
总结一下; 我希望能够检查人 1 是否是人 2 的朋友,而无需进行两次检查 - (人 1 与人 2 的朋友)或(人 2 与人 1 的朋友)。 习惯上,我只想说(是第 1 个人和第 2 个人的朋友)。
我想隐含地 model 等价于 A 与 B 成为朋友,然后 B 自动与 A 成为朋友。
@Entity
public class Person {
//Id and properties
@ManyToMany
@JoinTable(name="friendship",
joinColumns={@JoinColumn(name="person_id")},
inverseJoinColumns={@JoinColumn(name="friend_id")})
private Set<Person> friends = new HashSet<Person>();
// Getter and Setter methods
}
person
表和一个friendship
表。 person
表将只包含与Person
相关的信息,而friendship
表将只有两列person_id
和friend_id
来保持关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.