2011-05-13 64 views
0

查詢只基表我有這樣的映射HQL:從<join>實體

<class name="Person" table="person"> 
<id name="Id" column="id" type="Int32" unsaved-value="0"> 
    <generator class="native" /> 
</id> 

<property name="Code" column="code" type="String" not-null="true" /> 
<property name="FirstName" column="firstName" type="String" not-null="true" /> 
<property name="MiddleName" column="middleName" type="String" not-null="false" /> 
<property name="LastName" column="lastName" type="String" not-null="false" /> 

<join table="personPhoto" optional="true"> 
    <key column="personId" /> 
    <property name="Photo" column="pictureContent" not-null="false" /> 
</join> 

和生成的SQL總是使用左外連接,這是正確的。 但是,是否有可能告訴HQL只能從人員表中查詢,因爲我並不總是需要「照片」屬性?如何?

回答

0

人物和人物照片列之間是否存在一對一的關係?

如果您想要懶惰地載入人物的照片,我相信您必須將連接映射更改爲一對一映射併爲personPhoto創建一個新類。這樣Hibernate就可以插入一個代理對象。

+0

是的,它在數據庫中有一對一的關係。很遺憾,我無法添加新的班級personPhoto。 – bohebolo

+0

恐怕你倒黴了。 Hibernate需要一個類來基於延遲加載代理。 – Olaf

+0

這太令人沮喪了,沒有其他方式或解決方法?因爲無法更改數據庫,並且無法添加新的域對象。任何想法?任何人? – bohebolo