Сопоставление схемы значения атрибута модели (MAV) с помощью Hibernate - PullRequest
0 голосов
/ 22 октября 2018

CASE: атрибуты нового объекта заранее неизвестны.Пользователь должен иметь возможность проектировать новые объекты без изменений схемы.Кроме того, атрибуты для различных объектов следует повторно использовать среди созданных объектов, чтобы упростить сопоставимость.

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

Пример:

Plane {
  "name" : "..."
  "max_alt" : "..."
}

Submarine {
  "name" : "..."
  "depth_max" : "..."
}

Итак, у нас будет 3 атрибута, описывающих обе сущности: name, max_alt и deep_max, где на имя атрибута ссылаются как самолеты, так и подводные лодки.

Моя схема выглядит следующим образом:

Vehicle       Value                   Attribute
-------  1:n  -----------------  n:1  ----------
ID (PK)       OBJECT_FK    (PK)       ID (PK) 
              ATTRIBUTE_FK (PK)       NAME
              ATTRIBUTE_VALUE

В принципе у меня есть эта работа, основанная на этом подходе: https://en.wikibooks.org/wiki/Java_Persistence/ManyToMany#Mapping_a_Join_Table_with_Additional_Columns

Но сейчас я пытаюсь "улучшить" свой JPAотображение.Я хочу, чтобы все значения атрибута, принадлежащие транспортному средству, отображались атрибутом.

Sth.как это:

@Entity
public class Vehicle{
   //obvious code ommited

   **Map<Attribute, Set<AttributeValue>> attributeValueMap;**
}

Я много пробовал (см. список ниже), но не могу заставить это работать.Это вообще возможно?Мы будем благодарны за любую помощь!

JPA Hibernate - проблема с отображением множества данных с дополнительным столбцом в таблице сопоставления https://vladmihalcea.com/the-best-way-to-use-the-manytomany-annotation-with-jpa-and-hibernate/ Self ManyToMany с дополнительными столбцами с использованием JPA 2.0

PS: я знаю, что есть несколько ограничений использования MAV, но мы должны придерживаться этого подхода и реляционной базы данных.

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