私はちょっと気になる質問があります。jpa Hibernate @ ElementCollection
私のエンティティで@ElementCollectionを使うとき、hibernate(3.5)は制約なしでテーブルを生成します。
重要な編集
私のエンティティが別のクラスのサブクラスです。これはおそらく、hibernateがpkとfkを生成しない理由です。
エディットエンド
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)
)
これは外部キーまたは一意索引のような任意の制約を設定しない休止状態私のミスはありますか? 私はそれを手動で設定することができましたが、私は完全に(可能な限り)休止状態のデータベースを作成するエンティティに正しく注釈を付けることをお勧めします。
敬具、 メートル
PS:私の悪い全然。私の心の中でどこを行き来している2つのものを混ぜた。私は@ 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
)
あなたのサンプルコードでは@Enumeratedを使用していません –
外部キーは別の 'ALTER TABLE'ステートメントによって作成されます。 – axtavt
しかし、私はあなたが望むならばnullable = falseなどを設定できる@Columnアノテーションが必要だと思っています。 –