jpa Hibernate @ElementCollection - PullRequest
       3

jpa Hibernate @ElementCollection

1 голос
/ 10 февраля 2011

У меня есть вопрос, который немного беспокоит меня.

Когда я использую @ElementCollection в моей сущности, hibernate (3.5) генерирует мне таблицу без каких-либо ограничений.

Важное редактирование

Моя сущность является подклассом другого класса.Возможно, именно поэтому hibernate не генерирует pk и fk.

Edit End

public MyEntity extends BaseEntity
@ElementCollection(fetch=FetchType.EAGER)
private Set<String> test;

Заканчивается на (postgres 9):

CREATE TABLE myentity_test
(
  entityid bigint NOT NULL,
  test character varying(255)
)

Это моя ошибка, что hibernate не устанавливает никаких ограничений, таких как внешние ключи или уникальные индексы?Я мог бы установить его вручную, но я бы предпочел правильно аннотировать сущность, которая полностью (в максимально возможной степени) создает спящий режим.

С наилучшими пожеланиями, m

PS: вообще плохо,Перепутал две вещи, которые были в моей голове.я имел в виду @ ElementCollection.

PS: @Column помог создать уникальный индекс.Изменить: исправил имена в моем примере.

CREATE TABLE myentity_test
(
  entityid bigint NOT NULL,
  test character varying(255),
  CONSTRAINT itemequipable_test_test_key UNIQUE (test)
)

Я бы ожидал что-то вроде этого (псевдокод):

CREATE TABLE myentity_test
(
  entityid bigint NOT NULL PRIMARY KEY,
  test character varying(255) PRIMARY KEY,
  CONSTRAINT fk_entityid references (myentity) on entityid
)

1 Ответ

1 голос
/ 11 февраля 2011

@ Column и @ JoinColum / @ OneToMany аннотации являются правильным способом обработки внешних ключей и уникальных ограничений, даже с @ ElementCollection.

В вашем конкретном примере не будет иностранногоключевое отношение, потому что String (тип вашего Set) не сопоставлен с другим объектом.

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