私は以下のように2つのクラスを関連付けようとしています
説明用のコードサンプルは以下のとおりです。BillClass
public class Bill {
@Id
@GeneratedValue(strategy = GenerationType.AUTO )
private long id;
private long billNumber;
private BillType billType;
@OneToOne
private Customer billCustomer;
//getter and setter omitted
}
顧客クラスの定義は
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String customerRef;
@OneToMany(fetch = FetchType.EAGER)
private List<Bill> customerBills;}
条件APIを使用してオブジェクトを取得しようとすると、関連するオブジェクトが取得されます。
Bill bill = (Bill) session.createCriteria(Bill.class)
.add(Restrictions.eq("billNumber", BILL_NUMBER)).uniqueResult();
顧客に関連付けられた請求書のサイズを検証すると、nullとして取得されました。(ただし、1つの請求書が顧客に関連付けられています)
Assert.assertEquals(1,bill.getBillCustomer().getCustomerBills().size());
(上記の条件は失敗します)が、他の方法で検証すると成功します
List<Bill> billList = session.createCriteria(Customer.class)
.add(Restrictions.eq("customerRef",CUSTOMER_REF)).list();
Assert.assertEquals(1,billList.size());
私は熱心にオブジェクトをロードしました。何が欠けているのかわかりませんか?