Siema, podpowiedzcie jak ogarnąć takie wiązanie, że w jednej tabeli będą się znajdowały dwa klucze z tabeli drugiej.
Chodzi o to że jest Historia przekazania sprzętu w której musi się znaleźć ID magazynu docelowego i ID magazynu źródłowego. Ponadto, sprzęt może "być przenoszony" między magazynami i przy każdym przeniesieniu powinna tworzyć się, historia z jakiego magazynu dany sprzęt został przekazany. Im więcej przekazań tym więcej wpisów w historii danego sprzętu.
Czy da się zrobić coś takiego za pomocą powiązania adnotacją? Może znacie lub spotkaliście się z innym (bardziej profesjonalnym) rozwiązaniem poniższego problemu?
poniżej przykład który nie działa - dostaje taki błąd:
Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: pl.tbns.model.TransmissionHistory column: magazine_id (should be mapped with insert="false" update="false")
@Entity
@Table(name = "Magazine")
public class Magazine {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "magazine_id", unique = true, nullable = false)
private long id;
@ManyToMany
private List<Equipment> equipment;
@OneToMany(mappedBy = "equipment")
private Set<TransmissionHistory> transmisHistory;
private String name;
@Entity
@Table(name = "TransmissionHistory")
public class TransmissionHistory{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "transmisHistory_id", unique = true, nullable = false)
private long id;
@ManyToOne
@JoinColumn(name = "equipment_id")
private Equipment equipment;
@ManyToOne
@JoinColumn(name = "magazine_id")
private Magazine sourceMagazine; //magazyn źródłowy
@ManyToOne
@JoinColumn(name = "magazine_id")
private Magazine destMagazine; //magazyn docelowy