私は2つのデータベースエンティティ:Forum
とTopic
を持っています。JPA:外部キー注釈
Topic
は、のフォーラムを示すprotected long forumId
データメンバーを持っています。
私の質問は、このデータメンバーに使用するアノテーションです。フォーラムは多くのトピックがあり、トピックは唯一のフォーラムに属したよう
私は2つのデータベースエンティティ:Forum
とTopic
を持っています。JPA:外部キー注釈
Topic
は、のフォーラムを示すprotected long forumId
データメンバーを持っています。
私の質問は、このデータメンバーに使用するアノテーションです。フォーラムは多くのトピックがあり、トピックは唯一のフォーラムに属したよう
は、おそらく@ManyToOne
で注釈を付けフォーラムのtype属性に行きたい:
@ManyToOne
@JoinColumn(name = "forumId")
private Forum forum;
をもっと見る:
しかし、この場合の「問題」は、TopicをXMLやJSON(クライアントに渡すなど)にシリアル化すると、Forumオブジェクト全体がデフォルトでシリアル化されます... ifサーバーにトピックをアップロードし、トピック+フォーラムオブジェクト全体を渡す必要がある場合は、フォーラムIDだけを使用することはできません。場合によっては、関連するエンティティの外部キーを手動で挿入するほうが簡単です。 – splinter123
@ManyToOne 注釈には、フォーラムごとに多数のトピックが含まれています。
他の人が回答したように -
ManyToOneアノテーションとJoinColumnアノテーションを使用する必要があります。
JPAはORM - オブジェクトリレーショナルマッピングに関するものですので、
Javaでは "自然に"行ったように別のオブジェクトを参照する必要があります。あなたのケース)
これは、JPAとHibernate(以前はJPA)の関係の設計上の考慮の1つでした。
'forumId'を' Topic'に宣言する必要はありません。 –
なぜそう言うのですか?トピックが所属するフォーラムを知る必要があるので、私はそれが必要だと思います。 – socksocket
@socksocket私は '@ JoinColumn'アノテーションでIDを指定する属性' Forum'にアノテーションを付けることができると思います。 ;) – elias