0
我有三个关系导致我的问题。JPA @OneToMany困境
<code>
@Entity
@Table(name="area")
public class Area implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="name")
private String name;
...................
}
@Entity
@Table(name="law_connection")
public class Connection implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne(fetch=FetchType.LAZY,cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name="client")
private Client client;
@OneToMany(fetch=FetchType.LAZY,targetEntity=Area.class, cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name="areas")
private List<Area> areas;
……………………
}
@Entity
@Table(name=“worker”)
public class Worker implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="firstName")
private String firstName;
@Column(name="lastName")
private String lastName;
@OneToOne(fetch=FetchType.LAZY,cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name="organisation")
private Organisation organisation;
@Column(name="status")
@Enumerated(EnumType.ORDINAL)
private WorkerState state;
@OneToMany(fetch=FetchType.LAZY,targetEntity=Area.class,cascade = {CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH})
@JoinColumn(name="areas")
private List<Area> areas;
………………..
}
</code>
在数据库中会发生什么情况是这样的:
<code>
mysql> select * from area;
+------+-----------------------+------------+
| ID | name | areas |
+------+-----------------------+------------+
| 1601 | Unknown | NULL |
| 1602 | Someplace | NULL |
| 1603 | Someotherplace | NULL |
| 1604 | Someplace2 | NULL |
| 1605 | Someplace3 | NULL |
| 1606 | Someplace4 | NULL |
| 1607 | Someplace5 | NULL |
| 1608 | Someplace6 | NULL |
| 1609 | Someplace7 | NULL |
| 1610 | Someplace7 | 1652 |
| 1611 | Someplace8 | NULL |
+------+-----------------------+------------+
11 rows in set (0.00 sec)
</code
什么观察的是,只能有一个对象指向一个区域,我有什么误解吗?
我需要一个工人有许多领域,并连接到至少有一个我在做什么错
你不想说如何坚持这些对象。所以你只在一个区域添加一个区域到“区域”集合才可能持续?谁知道基于上面的信息。此外,您正在重复使用区域表中的“区域”列以用于两个单独的目的,这很容易出现故障......它如何知道区域是工人还是连接“区域”? – 2014-12-06 11:05:47
谢谢尼尔,请进一步解释,如果你不介意你的第二个评论,因为它听起来像是问题所在。那么我是否需要在连接实体中的工作者实体中使用@JoinColumn(name =“workers”)和@JoinColumn(name =“connections”)? – 2014-12-06 11:21:12