У меня есть вопрос, который меня беспокоит.jpa Hibernate @ElementCollection
Когда я использую @ElementCollection в моей сущности hibernate (3.5), создается таблица без каких-либо ограничений.
Важно Редактировать
My Entity является подклассом другого класса. Возможно, причина этого в том, что спящий режим не генерирует 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 полностью (насколько это возможно) создает мою базу данных.
С наилучшими пожеланиями, м
PS: Моя плохо. Смешали две вещи, которые, когда я собираюсь в голове. Я имел ввиду @ElementCollection.
PS: The @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
)
В вашем примере кода не используется @ Замечено –
Внешний ключ создается отдельным оператором 'ALTER TABLE', возможно, вы его пропустили. – axtavt
Однако я считаю, что вам просто нужна аннотация @Column, которую вы можете установить для NULL = false и т. Д., Если вы этого пожелаете. –