JPA решение для скрещенных столбцов двух составных ФК - PullRequest
0 голосов
/ 21 марта 2020

У меня есть одна таблица «A» с тремя полями (a1, a2, a3) составного ПК, и два из них (a1, a2) представляют собой составной FK для другой таблицы «B», поэтому я использую два @Embeddable классы для достижения этого:

@Entity
@Table(name = "A")
public class A implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private APk aPk;

    @MapsId(aPartPk)
    @ManyToOne
    @JoinColumn(name = "a1")
    @JoinColumn(name = "a2")
    private B b;

    '''other columns'''

}

@Embeddable
public class APk implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private APartPk aPartPk;

    private String a3;
}

@Embeddable
public class APartPk implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private String a1;

    private String a2;
}

@Entity
@Table(name = "B")
public class B implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    @EmbeddedId
    private APartPk aPartPk;

    '''other columns'''

}

Но теперь у меня есть новое требование, что мне нужно сделать еще два поля (a1, a3) как еще один составной FK и отнести их к таблице C, это Есть ли решение для этого? Любые комментарии будут приветствоваться.

1 Ответ

0 голосов
/ 24 марта 2020

Я хочу ответить на свой вопрос здесь -

Чтобы сделать еще два поля (a1, a3) в качестве другого составного FK и отнести их к таблице C, просто добавьте эти коды:

@MapsId(aPk)     -----------------------------> use the whole PK as the @MapsId
@ManyToOne
@JoinColumn(name = "a1")
@JoinColumn(name = "a3")
private C c;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...