2017-12-19 3 views
0

DBを持つSpringブートプロジェクトがあります。私はすでにテーブルを手に入れました。それを「人」と呼んでみましょう。私は2つの列、すなわちPeople_idStringを持つ2番目のテーブル "People_Strings"を追加する必要があります。私はPeopleからのすべての行に多くの文字列を含める必要があります。エンティティに文字列のリストを追加する方法 - Spring、Hibernate

プロジェクト内のPeopleエンティティでどのようにマップできますか?

編集:私はStringためsepareteクラスを作成せずにこれを実行する必要があるかPeople_Strings

+2

あなたは何を試してみましたか?私たちにあなたのコードを教えてもらえますか? – Farlan

+0

別のクラスなしでこれを行うには、リストを保存することができます!そして最初に –

答えて

-1

のためにこれはちょっと基本的な質問であり、私はあなたが最初に「はじめよう」Hibernateに読むことをお勧めします。

+0

であなたの質問をはっきりと尋ねてください。他のエンティティからのオブジェクトのリストを含めるには、基本的な質問です。私はストリングのための別のクラスを作成したくありません。だから私は別の方法があるかどうか尋ねている。 – Alex

+0

次に、 '@ ElementCollection'、' @ MapKeyColumn'、および '@ CollectionTable'の組み合わせを使うことを検討してください。 –

1

の可能性@ManyToOne関係は人と文字列の間@OneToMany関係です。以下のようなものがあなたのために働くでしょう。

@Entity 
@Table(name = "People") 
public class People{ 

    @Id 
    @GeneratedValue 
    private Long id; 

    @OneToMany(fetch= FetchType.EAGER, cascade=CascadeType.ALL, mappedBy = "peopleId") 
    private List<PeopleStrings> PeopleStrings; 

@Entity 
@Table(name = "People_Strings") 
public class PeopleStrings{ 

    @Id 
    @GeneratedValue 
    private Long peopleId; 

    @ManyToOne 
    @JoinColumn(name="peopleId") 
    private String string; 
+0

これは、私が休止状態を嫌う理由、' FetchType.EAGER'が将来クエリが実際にひどく悪い –

+0

あなたは正しいです。それを避けるためにここには何があるのでしょうか? –

+1

オプション1:冬眠を避ける...そのナンセンスを一緒に避けてください!! (休止状態にするとインテリジェントな人は愚かなクエリを書く)オプション2:決して熱心なフェッチはデフォルトではない。あなたが熱望したいのであれば、あなたは明示的に質問するべきです。 –

0

あなただけがPeopleエンティティクラスに次のプロパティを追加することができ、ということが必要な場合:

@ElementCollection 
public List<String> strings; 
関連する問題