【发布时间】:2012-01-11 18:48:04
【问题描述】:
我正在尝试在 Java EE 中复制 Facebook 的墙。
我有 3 张桌子: 用户、帖子、墙。
用户有一个用户名(PK)和其他字段,帖子有一个id(PK),一个作者(用户上的FK)和其他一些。 Wall 是 Post 和 User 之间的连接表。
关键是只有当我在 Wall 中将 post 和 user 都作为 PK 时,该项目才能编译。 让 Post 拥有 PK 和 User 就像一个非 null 值是行不通的!
但是将它们都作为PK会导致@ManyToMany,这意味着同一个帖子可以出现在许多墙上,这是不正确的!
我尝试在 Wall 中发布为 PK 并使用此映射:
帖子:
@JoinTable(name = "Wall", joinColumns = {
@JoinColumn(name = "id", referencedColumnName = "id")}, inverseJoinColumns = {
@JoinColumn(name = "user", referencedColumnName = "username")})
@OneToMany
private User user;
用户:
@ManyToOne
private Collection<Post> onWall;
但它说:
无法确定类 [class entity.Post] 上的关系属性 [user] 的目标实体。不使用泛型时,请确保在关系映射中定义了目标实体。
我的映射有什么问题?
【问题讨论】:
标签: jakarta-ee many-to-many one-to-many many-to-one jointable