Привет! Все,
У меня проблема с двумя объектами. отображается через @OneToMany
однонаправленное отношение. У меня есть сущность Artifact
, которая может иметь несколько Revision
. Вот как я их нанёс на карту
@Entity
@Table(name = "artifact")
public class Artifact implements Serializable {
private static final long serialVersionUID = 248298400283358441L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Version
private Integer version;
...
@OneToMany(cascade = { CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE })
@JoinTable(name = "artifact_revisions", joinColumns = @JoinColumn(name = "artifact_id"), inverseJoinColumns = @JoinColumn(name = "revision_id"))
private Set<Revision> revisions;
И редакция сущности
@Entity
@Table(name = "revision")
public class Revision implements Serializable {
private static final long serialVersionUID = -1823230375873326645L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
...
@Column(name = "date_created", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date creationDate;
Таблица ревизий сохраняет имя файла, которое было обновлено; старое значение и новое значение и т. д.
Проблема, с которой я сталкиваюсь, заключается в том, что когда я обновляю артефакт; последнее сопоставление удаляется, а затем вставляется новое, так что если в результате у меня будет доступна только последняя, но одна ревизия, а не вся история ревизий.
Hibernate:
update
artifact
set
description=?,
estimate=?,
name=?,
rank=?,
status=?,
sysId=?,
version=?
where
id=?
and version=?
Hibernate:
delete
from
artifact_revisions
where
artifact_id=?
and revision_id=?
Hibernate:
insert
into
artifact_revisions
(artifact_id, revision_id)
values
(?, ?)
Если я удаляю аннотацию @version
из артефакта, она работает нормально.
- Это потому, что я неправильно отображаю отношения? Должно ли это отношение отображаться как коллекция элементов?
- Существует еще одна сущность
Task
, которая должна быть сопоставлена с сущностью Revision
. Итак, что будет лучшим подходом здесь?