2017-09-13 39 views
0

我有实体项目和实体群集。 一个项目可以有多个群集。 我不想要第三个表来保存这种关系。只保存到群集的项目ID。春季启动一对多多向单向

这是我的项目单位:

@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

使用@JoinColumn代替@JoinTable

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

,并添加PROJECT_ID列到群集实体。

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

太简单了!使用了错误的注释。谢谢! – Urban

0

如果我错了,请纠正我,但就我所知的软件工程而言,无论如何你都无法完成:无法在第三张表中存储任何关系。列表,集合,地图等等必须以这种方式存储。

否则,对于您的情况,您会为每个关系群集复制Project的属性,这并不可取。