J'ai une question qui me dérange un peu.jpa Hibernate @ElementCollection
Lorsque j'utilise @ElementCollection dans mon entité, hibernate (3.5) me génère une table sans aucune contrainte.
Modifier Important
Mon entité est une sous-classe d'une autre classe. C'est peut-être la raison pour laquelle hibernate ne génère pas le pk et le fk.
Edit End
public MyEntity extends BaseEntity
@ElementCollection(fetch=FetchType.EAGER)
private Set<String> test;
termine avec (postgres 9):
CREATE TABLE myentity_test
(
entityid bigint NOT NULL,
test character varying(255)
)
Est-ce que mon erreur en veille prolongée ne crée pas de contraintes comme les clés étrangères ou les index uniques? Je pourrais le configurer manuellement, mais je préférerais annoter l'entité correctement que hiberner complètement (autant que possible) crée ma base de données.
Meilleures salutations, m
PS: Mon mauvais à tout. Mélangé deux choses qui circulaient dans mon esprit. Je voulais dire @ElementCollection. PS: La @Column a contribué à fournir l'index unique. Modifier: corrigé les noms de mon exemple.
CREATE TABLE myentity_test
(
entityid bigint NOT NULL,
test character varying(255),
CONSTRAINT itemequipable_test_test_key UNIQUE (test)
)
J'attends quelque chose comme ça (code pseudo):
CREATE TABLE myentity_test
(
entityid bigint NOT NULL PRIMARY KEY,
test character varying(255) PRIMARY KEY,
CONSTRAINT fk_entityid references (myentity) on entityid
)
Votre code d'exemple n'utilise pas @Enumerated –
La clé étrangère est créée par une instruction séparée 'ALTER TABLE', vous l'avez peut-être manquée. – axtavt
Cependant, je crois que vous avez juste besoin d'une annotation @Column que vous pouvez définir nullable = false etc. si vous le souhaitez. –