2017-09-13 17 views
0

私はエンティティのプロジェクトとエンティティのクラスタを持っています。 プロジェクトは複数のクラスタを持つことができます。 私はこの関係を第3のテーブルに保存したくありません。クラスタに保存されたプロジェクトIDだけです。スプリングブート1対多の一方向

これは私のプロジェクトのエンティティである:

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

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer id; 

    private String projectName; 

    @OneToMany 
    @JoinTable(name = "cluster") 
    private Set<Cluster> clusters; 
} 

これは私のクラスタエンティティ

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

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Integer id; 

    private String team; 

    private String concept; 
} 

ですこれは私にエラーを与える:参照される主キーと同じ数の列を持っている必要があります。

どうすればこの問題を解決できますか?私はこれを解決する方法を見ていない。

答えて

2

代わり@JoinTable

public class Project { 
    //... 
    @OneToMany 
    @JoinColumn(name="PROJECT_ID", referencedColumnName="id") 
    private Set<Cluster> clusters; 

の使用@JoinColumnとクラスタエンティティにPROJECT_ID列を追加します。

public class Cluster { 
    //... 
    @Column(name = "PROJECT_ID") 
    private Integer projectId; 
+0

とても簡単です!誤った注釈を使用しました。ありがとう! – Urban

0

私が間違っていても私を訂正してください。私がソフトウェアエンジニアリングについて知っている限り、あなたは何もしたくありません。関係はどこにも保存できませんが、3番目のテーブルにはありません。リスト、セット、マップなどはそのように格納しなければなりません。

そうしないと、関係の各クラスタに対してProjectのプロパティが複製されることになりますが、それは望ましくありません。

関連する問題