Cześć piszę gdyż już jestem ostro skołowany i nie wiem czy dobrze kombinuje.
Mam obiekt document, documentHistory i Usera.
Dokument wiadomo ma jakies pola, w documentHistory chce trzymać zmiany tego dokumentu z informacją Który user. Dokument może mieć wiele zmian przez tego samego usera lub kilku, każda zmiana ma date.
Troche kodu.
Klasa Document
@Entity
public class Document implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(unique = true,
nullable = false)
private UUID documentId;
private LocalDateTime generateDate;
@OneToMany(mappedBy="documentHistory")
private Set<DocumentHistory> documentHistory;
@Entity
public class UserAccount
implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(unique = true,
nullable = false)
@NaturalId
private String username;
private String password;
@OneToMany(mappedBy="personWhoChanged")
private Set<DocumentHistory> workHistory;
@Entity
public class DocumentHistory implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="username")
private UserAccount personWhoChanged;
@ManyToOne
@JoinColumn(name="documentId")
private Document documentHistory;
private LocalDateTime changedDate;
Problem mam gdy pobieram sobie testowo jakis dokument i wywalam JSON'a z zawartością to dostaje w polu documentHistory wiel wierszy z informacja na temat usera i apka sie wywala.
Nie mam zbytniego doświadczenia z JPA i nie widzę gdzie mogłem się walnąć. Mapowania chyba dobre są.
Był bym wdzięczny za jakieś wskazówki. Dodam że działam na PostgreSQL a łącze się wykorzystując Spring Data JPA.
Lekko obawiam się wiązania Usera z Historią nie wiem czy tutaj nie można by było coś uprościć.