使用Hibernate 5.2和Java 8 我有一個名爲PatientMetaData表,有followng字段(在數據庫表本身,HMO爲整數):休眠:多對一的關係,放入多種關係,只有當
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int uid;
private String name;
@ManyToOne
@JoinColumn(name="hmo")
private Hmo hmo;
健保組織表中包含一個UID和名稱:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int uid;
private String name;
,並通過在患者表HMO表和HMO的UID相關患者表。
當加載所有患者時,我發現對於每個患者,都會查詢其HMO。
然而,有10K患者和只有7個HMO,因此爲每個患者加載HMO似乎是多餘的。
我有辦法避免所有這些查詢?
一個選項是定義PatientMetadata
實體類將hmo作爲一個整數,所以我只會加載患者,然後將所有HMO加載到Java地圖中,最後我會在語法上將HMO從地圖附加到每個病人。
這看起來有點麻煩。
直接用Hibernate有沒有更好的方法?
嘗試'@ManyToOne(fetch = FetchType.LAZY)'。這將僅在使用hmo對象時初始化hmo對象,否則它將爲null –