Как мне сопоставить эти отношения с помощью JPA / Hibernate? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть две таблицы, которые имеют общий ключ.Мне бы хотелось, чтобы при загрузке класса для первой таблицы я также получал список классов, соответствующих второй таблице, в которой они разделяют ключ.

Более конкретно: tableA имеет идентификатор (id1), который существует в нескольких записях таблицы B.Однако tableB использует составной ключ и использует и id1, и id2 в качестве ключей.

Чего я хотел бы добиться, так это того, чтобы при загрузке POJO для tableA я также получал все записи таблицы B, где id1 изтаблица A равна id1 в таблице B. Что-то вроде:

public class TableA {
  private String id1;
  private List<TableB> list; // where id1 in tableA == id1 in tableB
}


table A id column: 
id1

table B composite id: 
id1 // same as for tableA
id2

1 Ответ

0 голосов
/ 24 ноября 2018

Класс B будет иметь составной идентификатор, частично зависящий от A. Это может быть отображено с помощью EmbeddedID или путем указания класса ID.Использование идентификатора класса будет выглядеть следующим образом:

Объект A

@Entity
public class A {
    @Id
    @Column(name = "id1")
    private Long id1;

    @OneToMany(mappedBy = "a")
    private Set<B> bs;
}

Объект B

@Entity
@IdClass(Bid.class)
public class B {
    @Id
    @ManyToOne
    @JoinColumn(name = "id1")
    private A a;

    @Id
    @Column(name = "id1")
    private Long id2;
}

Класс ID для B

public class Bid implements Serializable{
    //must be of same type as id of target entity A
    private Long a;
    private Long id2;

    // **must** implement equals and hash code
}
...