2010-06-17 85 views
2

我有一个包含属性的对象,该属性是SQL语句的结果。如何将SQL语句添加到我的nHibernate映射文件中?使用SQL查询来填充nHibernate映射文件中的属性

例子中的物体:

public class Library{ 
    public int BookCount 
    { 
     get; 
     set; 
    } 
} 

实例映射文件:

<hibernate-mapping> 
    <class name="Library" table="Libraries"> 
     <property name="BookCount" type="int"> <- This is where I want the SQL query to populate the value. -> 
    </class> 
</hibernate-mapping> 

实例SQL查询:

SELECT COUNT(*) FROM BOOKS WHERE BOOKS.LIBRARY_ID = LIBRARIES.ID 

回答

4

这在Ayende's blog post讨论:

公式来指定,我们要与属性关联任意SQL的方式。显然,这是一个只读值,我们将在极少数情况下使用它。尽管如此,它有时可能非常有用。

实施例:

<property name="BookCount" type="int" formula="(SELECT COUNT(*) FROM BOOKS WHERE BOOKS.LIBRARY_ID = ID)" />