У меня есть три отношения, которые вызывают у меня проблемы.JPA @OneToMany woes
<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
Что наблюдаем, что может быть только один объект, который указывает на область, Что я неправильно здесь?
мне нужен работник, чтобы иметь много областей и соединение, чтобы иметь по крайней мере один, что я делаю неправильно
Вы опускаете, чтобы сказать, КАК вы сохраняли эти объекты. Таким образом, вы только добавили один район в коллекцию «областей», прежде чем, возможно, сохранились? кто знает, основываясь на информации выше. Кроме того, вы повторно используете столбец «area» в таблице Area для двух отдельных целей, которые подвержены неудаче ... как он узнает, является ли Area рабочим или «областью» соединения? ???? –
Спасибо Нейл, пожалуйста, объясните, если вы не возражаете против своего второго комментария, так как это звучит так, вот где проблема. Так что мне нужно использовать что-то вроде @JoinColumn (name = "workers") в рабочем объекте и @JoinColumn (name = "connections") в объекте соединения? –