JPA / Hibernate отображает динамические столбцы в виде списка объектов - PullRequest
10 голосов
/ 07 сентября 2010

У меня есть существующая схема БД, которую я пытаюсь ORM'изложить с аннотациями JPA / Hibernate. Схема предназначена для позволяют клиентам связывать дополнительную информацию с каждой строкой в ​​таблице. Вместо использования шаблона ключ-значение существующее решение определяет необходимое количество динамических столбцов во время установки и изменяет таблицу на добавить дополнительные столбцы для динамических полей. В действительности каждая таблица имеет набор известных / фиксированных столбцов и группу динамических столбцов.

|table:X|
|id|known1|known2|dynamic1|dynamic2|..|dynamicx|

Таблица параметров указывает, какие таблицы имеют дополнительные динамические поля

|table:parameter|
|table|column|meta|
|x|dynamic1||
|x|dynamic2||
|x|dynamicx||
|y|dynamic15||

В JPA-моделировании это легко создать определение для известных фиксированных столбцов в каждой таблице.

@Entity
@Table(name="x")
public class X
{
    @Id
    private Long id = null;

    @Column(name="known1")
    private Long known1 = null;
}

Я планирую смоделировать таблицу параметров как класс, а затем разрешить каждому из моих классов иметь список параметров. Я не уверен, как мне следует сопоставить этот объект List, чтобы детали записывались в одну и ту же таблицу.

@Entity
@Table(name="x")
public class X
{
    // @Column(name="x",class="X") ??????????
    List<Parameter> dynamicColumns = null;
}

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

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Я думаю, вам нужно будет использовать nativeQuery для получения этих динамических данных с помощью jpa.

0 голосов
/ 26 августа 2013

В Hibernate это возможно, см. Статью ниже.Однако это старый подход (2007), я сам ломаю голову, чтобы реализовать его с использованием JPA.пока не удалось

http://www.infoq.com/articles/hibernate-custom-fields

Еще одна тема в этой теме:

https://www.java.net//node/666078

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...