2016-11-10 13 views
0

私はいくつかの疑問を持っています。例えば、テーブルPostとテーブルFiles。投稿には多くのファイルが関連付けられ、1つのファイルには1つの投稿が関連付けられているため、1対多の関係になっています。マップは常に一対一の関係でマップします

私たちはOneToMany関係またはManyToOneまたは両方を作成しなければなりません。たとえば、ポストやファイルの例では、ポストにあるファイルとポストにあるファイルが分かっているかどうかを知りたい場合は、その単方向か双方向かを知るために何を求めているのでしょうか?そして両方ともそうであれば双方向的な関係、そうですか?しかし、この2つの質問は非常によく似ているので、答えはイエスです。だから、それは良い練習地図ではない常に両方向?

例、マッピング常に両方向:

@Entity 
public class Post{ 
@GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @OneToMany(mappedBy="post") 
    private List<Files> files= new ArrayList<>(); 
} 

@Entity 
public class File{ 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int id; 

    @ManyToOne 
    @JoinColumn(name="post_id") 
    private Post post; 
} 

答えて

0

これはすべての要件とデータモデルによって異なります。リレーションを双方向にするのは良いことでも悪いことでもありません。

Filesにユーザーが到達するには、Postからのみ、一方向にする必要があります。 また、ユーザーがファイルを直接検索する機能を提供する必要があり、そのユーザーが投稿を見ることができる場合は、双方向にします。

双方向関係の場合、FilesPostの間に関係を設定する便利なメソッドを作成してください。inverse属性を使用することを忘れないでください。

+0

あなたの答えをありがとう。たとえば、最初の例を前提として、ユーザーがいくつかのファイルに達することができるのは、そのファイルを単独の投稿にすることです。しかし、この場合OneToManyかManyToOneですか?それをチェックする方法を知っていますか? – Ozzy

+0

@Ozzy単方向の場合 - 投稿のファイルのリストフィールドがあり、投稿のマッピングを行う必要があります。もちろん、それはOneToManyマッピングになります – Ubercool

関連する問題