2009-05-20 13 views
2

こんにちは私はFindByExample(オブジェクトo)メソッドを記述したいと思います。それが正常に動作する必要があります(これは、一般的なクラスにあります)NHibernateの列挙型プロパティでICriteriaを使用する方法

public IList<T> FindByExample(T o) 
{ 
    return Session.CreateCriteria(typeof(T)).Add(Example.Create(o)).List<T>(); 
} 

を、しかしTは、列挙型の性質を持っている場合、それは、この例外がスローされます:だから私はこれを試してみましたNHibernateので 「型の不一致.Criterion.SimpleExpression:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" ...>

:EnumProperty期待タイプ可能System.Int32、実際の型EnumType」

マッピングはこれです

<class name="OrdenDeCompra" table="ordenDeCompra" lazy="false">

<id name="Id" column="id_ordenDeCompra" type="Int32"> 
    <generator class="increment" /> 
</id> 

... 

<property name="EnumType" column="id_enum" 
      type="Int32" not-null="true" /> 
... 

</class> </hibernate-mapping>

どのように私は列挙型で検索するんですか?

答えて

8

enumのマップの型をInt32からenumの型に変更します。

<property name="EnumType" column="id_enum" 
      type="namespace.here.enumTypeName, assemblyname" not-null="true" /> 

編集: 列挙の整数値は依然としてかのintとしてDBに格納されます。

関連する問題