Отображение Hibernate для коллекции значений столбца из той же таблицы - PullRequest
0 голосов
/ 28 февраля 2019

Учитывая следующую таблицу:

CREATE TABLE MY_SCHEMA.TABLE_A (
    id integer NOT NULL,
    value character varying(50) NOT NULL,
    linked_id integer
)

Я хочу знать аннотации гибернации, чтобы завершить мой класс сущности:

public class TableA {
    @Id @Column(name="id", unique=true)
    private int id;
    @Column(name="value", nullable=false)
    private String value;
    // missing annotations
    private String linkedValue;
}

Так что я получаю linkedValue (который приходитиз себя присоединиться к TABLE_A на linked_id = id и выбрать из столбца value) как String в моем классе сущностей TableA.

Аналогично, если это не один к одному:

CREATE TABLE MY_SCHEMA.TABLE_A (
    id integer NOT NULL,
    value character varying(50) NOT NULL
)

CREATE TABLE MY_SCHEMA.TABLE_B (
    table_a_id integer NOT NULL,
    linked_table_a_id integer NOT NULL
)

Каковы аннотации гибернации для завершения моего класса сущности:

public class TableA {
    @Id @Column(name="id", unique=true)
    private int id;
    @Column(name="value", nullable=false)
    private String value;
    // missing annotations
    private Set<String> linkedValues;
}

Так что я получаю набор linkedValues (который происходит от соединения TABLE_A с TABLE_B on id = table_a_id и присоединение TABLE_A снова к linked_table_a_id = id, чтобы выбрать из столбца value) в моем классе сущности TableA.

Предпочитать ответы без необходимости вводить и дополнительный класс сущности TableB.Спасибо.

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете использовать JPA 2.0 @ElementCollection:

public class TableA {

   @Id @Column(name="id", unique=true)
   private int id;

   @Column(name="value", nullable=false)
   private String value;

    @ElementCollection
    @CollectionTable(name = "TABLE_A",joinColumns = @JoinColumn(name = "linked_id"))
    @Column(name = "value")
    private Set<String> linkedValues = new HashSet<String>();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...