Java EE で Facebook の壁を複製しようとしています。
User、Post、Wall の 3 つのテーブルがあります。
ユーザーにはユーザー名(PK)とその他のフィールドがあり、投稿にはID(PK)、作成者(ユーザーのFK)などがあります。Wall は Post と User の間の結合テーブルです。
要点は、私が Wall に投稿とユーザーの両方を PK として持っている場合にのみ、プロジェクトがコンパイルされるということです。null 以外の値が機能しないのと同じように、Post に PK と User を持たせることはできません。
しかし、それらの両方を 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] のターゲット エンティティを特定できません。ジェネリックを使用しない場合は、ターゲット エンティティが関係マッピングで定義されていることを確認してください。
マッピングの何が問題になっていますか?