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