2つのテーブルがあり、1番目のテーブルにはcompany_id、company_name、国名が含まれ、2番目のテーブルには1対1マッピングの会社関連の詳細が含まれます。親クラスの子クラスデータをフェッチしないHibernate 1対1マッピング
これは私のテーブル構造である: - :会社POJOで
: - - CompanyDetail POJOで
@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="COMPANY_ID")
private CompanyDetails companyDetails;
: -
@OneToOne(fetch = FetchType.EAGER, cascade=CascadeType.ALL)
@JoinColumn(name="COMPANY_ID")
public Company company;
POJOに使用されるマッピング後
company {
company_id int,
company_name varchar,
country varchar
}
company_detail {
id int,
company_id int,
company_description text,
future_goal text
}
しかし、会社のオブジェクトにcompanyDetailsのnullが含まれていると、会社オブジェクトを取得するために使用されるコードに続いて
: -
Company company = (Company) session.get(Company.class, companyId);
私は会社のデータと一緒にcompanyDetailsデータを取得したいです。
私は何か間違っていますか? この問題を解決するために必要なコードの変更。あなたが持っている両方のPOJOで
あなたのフィールドは 'CompanyCaptiveDetails'のプライベートなクラスですが、あなたのPOJOが' CompanyDetail'命名されます。説明してください – henrik
申し訳ありませんが、私は私の質問を修正しました。今すぐ見てください –
双方向関連についてのhibernateのドキュメントを読んでください。一方の側(外部キーを持たない側)はmappedByを使用してもう一方の側の逆でなければなりません。マッピングでは、2つの個別の1対1関連を定義します。 company.company_idがcompany_detail.idへの結合列(つまり外部キー)であることを示していますが、これは真ではありません。私は本当にこれらの2つのテーブルのポイントを見ていない。すべてを会社のテーブルに置くことができます。 –