如何使用两个映射字段创建单独的表?

时间:2017-12-13 23:27:06

标签: java spring hibernate spring-mvc spring-boot

我有一个用户实体。用户将拥有一个朋友列表。我在为此映射列表创建批处理时遇到问题。我希望电路板看起来像这样https://zapodaj.net/41cd4553308d3.png.html第一列是用户ID,第二列是朋友的ID。我正在考虑这样做

@ElementCollection
@CollectionTable(
        name = "users_friends",
        joinColumns = @JoinColumn(name = "user_id", nullable = false, updatable = false)
)
@Column(name = "user_friend_id")
private Set<UserEntity> friends;

但是ElementCollection没有映射实体,这种方式消失了。

如何创建这样一个特殊的表来将用户映射到朋友列表?

1 个答案:

答案 0 :(得分:0)

这是一种多对多的关系。 JPA支持它们没问题https://en.wikibooks.org/wiki/Java_Persistence/ManyToMany

在你的情况下做

@ManyToMany
@JoinTable(
  name="users_friends",
  joinColumns=@JoinColumn(name="user_id", referencedColumnName="id"),
  inverseJoinColumns=@JoinColumn(name="user_friend_id", referencedColumnName="id"))
private List<UserEntity> friends;

应该做的伎俩