あなたの質問に対する答えはありませんが...なぜ「インストルメンテーション」をいじって、1対1の関連付けを遅延ロードするのですか? Foo
クラスとその間の 1 対 1 の関連付けについて、以下をテストしましたFooDetail
。
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
public FooDetail getFooDetail() {
return detail;
}
そして、遅延読み込みはうまくいきます。Foo
これは、インスタンスを取得するときに実行されるステートメントです。
ハイバネート: foo0_.id=?
そして、後でゲッターを呼び出すと、FooDetail
がフェッチされます。
Hibernate: FooDetail foodetail0_ から id46_0_ として foodetail0_.id、fullName46_0_ として foodetail0_.fullName を選択します。
Foo
また、特定のインスタンスの削除も正常に機能し、ステートメントは正しい順序で実行されます。
Hibernate: id=? の Foo から削除
Hibernate: id=? の FooDetail から削除
以下は、参照用の対応するテーブルに対して Hibernate によって生成された DDL です。
テーブル Foo を作成します (id bigint not null、shortName varchar(255)、detail_id bigint、主キー (id))
テーブル FooDetail を作成します (id bigint not null、fullName varchar(255)、主キー (id))
テーブル Foo の変更 制約の追加 FK212C3F68B31178 外部キー (detail_id) 参照 FooDetail
Hibernate Annotations 3.4.0.GA でテスト済み。
更新:これがあなたが探しているものでない場合は、1 対多の関連付けを使用してください。1 対 1 の関連付けには制限があります (質問を明確にしてください。読者はあなたが何をしていないかを推測できません)。書き込みません)。