2012-02-03 59 views
1

假設我有像這樣的映射設置;數據庫中有CodeType行,代碼表中也有Code行。每個Code都可以是特定的代碼類型。多對一映射列的休眠標準

<class name="CodeType" table="CODE_TYPE"> 
    <id name="id" column="ID"> 
     <generator class="org.hibernate.id.MultipleHiLoPerTableGenerator"> 
      <param name="max_lo">100</param> 
     </generator> 
    </id> 
    <property name="name" column="NAME"></property> 
    <property name="description" column="DESCRIPTION"></property> 
    <property name="version" column="VERSION"></property> 
</class> 

這裏是代碼。由於許多代碼可以是相同的類型,因此定義了many-to-one

<class name="Code" table="CODE"> 
<id name="id" column="ID"> 
    <generator class="org.hibernate.id.MultipleHiLoPerTableGenerator"> 
     <param name="max_lo">100</param> 
    </generator> 
</id> 
<property name="name" column="name"></property> 
<many-to-one name="codeType" class="CodeType" column="CODE_TYPE_ID"></many-to-one> 
<property name="version" column="VERSION"></property> 

我需要找到那些具有某種類型的代碼。我怎樣才能做到這一點?如果我沒有將codeType設置爲多對一,而是將它保留爲Integer,我可以輕鬆地編寫諸如.add(Restrictions.eq("codeTypeId", 42))之類的東西。

回答

1
Restrictions.eq("codeType.id", 42) 

Restrictions.eq("codeType", session.load<CodeType>(42)) 
+0

爲什麼括號不均衡? – 2014-06-25 11:37:21

+0

,因爲我複製粘貼它從別處。固定。 – Firo 2014-07-07 05:50:26