Relacja 1:1 @JsonBackReference

0

Hej,
background: aplikacja, która dane zabiera z jakiegoś ERP jak również ze swojej bazy.
napisałem sobie widok na bazie ERP zwracający mi pewne dane np. id, nazwa, opis i brałem to w encje

@Table(name = "erpprizes")
@Entity
@Data
public class ErpPrize {
    @Id
    private Integer id;
    private String code;
    private String name;
    private int cost;

    @OneToOne(fetch = FetchType.EAGER,
            cascade = CascadeType.ALL,
            mappedBy = "erpPrize")
    @JsonManagedReference
    private Prize prize;
}

te dane tylko mogę pobrać ( z ERP tylko data-read ). Chcąc je jakoby rozszerzyć dodałem poniższe. Generalnie chce tylko "chodzić w stronę" od ErpPrize -> Prize

@Table(name = "prizes")
@Entity
@Data
public class Prize {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Integer id;

    @Lob
    private String description;

    @OneToOne(fetch = EAGER)
    @JoinColumn(name = "erpprize_id", referencedColumnName = "id")
    @JsonBackReference
    private erpPrize erpPrize;
}

bez adnotacji @JsonBackReference, @JsonManagedReference dostawałem recursive reference.
Wiem to prosta relacja, muszę się wstrzelić z innego języka, czy Waszym okiem jest ok?

5

Nie ok bo encje bazodanowe nie powinny być zwracane z frontu. Stosuj DTO

0

Zamiast relacji @OneToOne, skomplikowanego mapowania i problemów z JSONem, dałbyś po prostu Long prizeId i Long erpPrizeId i elo. Jak potrzebujesz obiektu to za pomocą danego repo pobierasz obiekt na podstawie id i elo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1