@turdubekov
Студент

Как одну сущность использовать в нескольких таблицах?

У меня есть сущность (Rate), которая используется в двух других таблицах (Tarif и TarifGarant), но при инициализации компилятор ругается мол, конфликт, как можну решить эту проблему в Hibernate? (Spring data jpa):

Сущности:
@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Rate {

    @Id
    @GeneratedValue(generator = "UUID")
    @Column(insertable = false, updatable = false)
    private UUID id;

    private double stavka;

    private int srok;
}


@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Tarif {

    @Id
    @GeneratedValue(generator = "UUID")
    @Column(insertable = false, updatable = false)
    private UUID id;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "rate_id", referencedColumnName = "id")
    private List<Rate> rates;

    private String code;
    private String name;
    private String note;
}


@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TarifGarant {
    @Id
    @GeneratedValue(generator = "UUID")
    @Column(insertable = false, updatable = false)
    private UUID id;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "rate_id", referencedColumnName = "id")
    private List<Rate> rates;

    private String code;
    private String name;
    private String note;
}
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день.
Было бы неплохо увидеть стек.
А так попробуйте:

class Rate {

	@ManyToOne(fetch = FetchType.LAZY)
    private Tarif tarif;

    @ManyToOne(fetch = FetchType.LAZY)
    private TarifGarant tarifGarant;
}

class Tarif {

	@OneToMany(
        mappedBy = "tarif",
        cascade = CascadeType.ALL,
        orphanRemoval = true
    )
    private List<Rate> rates;

}

class TarifGarant {

	@OneToMany(
        mappedBy = "tarifGarant",
        cascade = CascadeType.ALL,
        orphanRemoval = true
    )
    private List<Rate> rates;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы