NHibernate:将查询结果映射到映射文件中的列表属性

时间:2011-01-21 21:13:35

标签: c# nhibernate file collections mapping

我有一个Contact类,我想为用户提供City and Province的AutoComplete。

我以为我在Contact对象中创建了两个集合,并从它们的联系表中加载了Cities和Province:

public class Contact {  
    public virtual string Name { get; set; }  
    public virtual string City { get; set; }  
    public virtual string Province { get; set; }  
    public virtual IList<String> Cities { get; set; }  
    public virtual IList<String> Provinces { get; set; }  
}

并拥有如下映射文件:

<class name="Contact">  
    <id name="Id">  
        <generator class="native">  
            <param name="sequence">contact_id_seq</param>  
        </generator>  
    </id>  
<property name="Name" />  
<property name="City" />  
<property name="Province" />  
<property name="Cities" type="string" formula="SELECT DISTINCT city FROM contact" />  
<property name="Provinces" type="string" formula="SELECT DISTINCT province FROM contact" />  
</class>

但这不起作用。有什么办法可以实现吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

属性上的公式是一个SQL表达式,它定义属性的值,因此select应返回单个值。此外,通过按照您提议的方式工作,您将在每个实体上复制这些值,最好将其定义为静态列表,并在创建新会话时通过自定义hql填充值。

相关问题