Сопоставьте сущность с общим ключом поиска - PullRequest
0 голосов
/ 10 февраля 2020

[ОБНОВЛЕНО] Я работаю над проектом со следующими таблицами, которые используют один и тот же ключ:

Er Диаграмма: ER Diagram

Как видите, есть первичный ключ, полученный из Table_1 для Table 2 и Table_3, и table_4 также использует его. Затем я пытаюсь отобразить их, используя jpa ...

@Entity
@Table(name = "TABLE_1")
public class EntParceiroPrepago implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "PK_CD_PARTNER")
    private Long id;

Второй класс представляет собой составной PK для Table_2.

@Embeddable
public class CategoriaPrepagoId implements Serializable {

private static final long serialVersionUID = 1L;

@Column(name = "PK_CD_CATEGORY")
private Long codigo;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PK_FK_CD_PARTNER", referencedColumnName = "PK_CD_PARTNER")
private EntParceiroPrepago parceiro;

Третий класс представляет собой составной PK для Table_3.

    @Embeddable
    public class FornecedorPrepagoId implements Serializable {

        private static final long serialVersionUID = 1L;

        @Column(name = "PK_CD_PROVIDER")
        private Long codigo;

        @ManyToOne(fetch = FetchType.LAZY)
        @JoinColumn(name = "PK_FK_CD_PARTNER", referencedColumnName = "PK_CD_PARTNER")
        private EntParceiroPrepago parceiro;

Четвертый класс также является составным PK для Table_4, , но существует конфликт, потому что мне нужен PK_FK_CD_PARTNER . Не удается найти ожидаемую вторичную таблицу: таблица_2 недоступна для br.com.banese.aut.models.identificadores.ProdutoPrepagoId

@Embeddable
public class ProdutoPrepagoId implements Serializable {

    private static final long serialVersionUID = 1L;

    @Column(name = "CP_CD_PRODUTO")
    private Long codigo;

    @ManyToOne
    @JoinColumn(name = "PK_FK_CD_PROVIDER", referencedColumnName = "PK_CD_PROVIDER")
    @JoinColumn(name = "PK_FK_CD_PARTNER", referencedColumnName = "PK_FK_CD_PARTNER")
    private EntFornecedorPrepago fornecedor;

    @ManyToOne
    @JoinColumn(name = "PK_FK_CD_CATEGORY", referencedColumnName = "PK_CD_CATEGORY")
    @JoinColumn(name = "PK_FK_CD_PARTNER", referencedColumnName = "PK_FK_CD_PARTNER")
    private EntCategoriaPrepago categoria;

Извините, что не опубликовала реальную диаграмму ER и имена, потому что у меня могут возникнуть проблемы в моей работе. Я надеюсь, что мой вопрос ясен, и заранее спасибо за любую помощь.

...