我需要搜索公司地址 - 如果公司在其中一個擴展名中包含特定字符串,它必須出現在搜索結果中(類似於正則表達式'%string%')。nHibernate方法使用Criteria選擇其子集合中的字符串包含特定搜索詞的父代
本公司NHibernate的映射文件是這樣的:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="TaskMappings"
namespace="TaskMappings">
<class name="Company">
<id name="Id">
<generator class="sequence">
<param name="sequence">company_id_seq</param>
</generator>
</id>
<property name="Name" />
<property name="Fax" />
<property name="PostalCode" />
<bag name="Users" cascade="all-delete-orphan" inverse="true">
<key column="UserCompany" />
<one-to-many class="User" />
</bag>
<bag name="Phone" cascade="all-delete-orphan" lazy="false">
<key column="PhoneCompany" />
<element column="Phone" />
</bag>
<bag name="Email" cascade="all-delete-orphan" lazy="false">
<key column="EmailCompany" />
<element column="Email" />
</bag>
<bag name="Addresses" table="address" cascade="all-delete-orphan" lazy="false">
<key column="AddressCompany" />
<element column="Address" type="String"/>
</bag>
</class>
</hibernate-mapping>
和公司實體類是這樣的:
public class Company : Entity<int>
{
public virtual string Name { get; set; }
public virtual string Fax { get; set; }
public virtual string PostalCode { get; set; }
private IList<string> _phone = new List<string>();
public virtual IList<string> Phone
{
get { return _phone; }
set { _phone = value; }
}
private IList<string> _email = new List<string>();
public virtual IList<string> Email
{
get { return _email; }
set { _email = value; }
}
private IList<string> _addresses = new List<string>();
public virtual IList<string> Addresses
{
get { return _addresses; }
set { _addresses = value; }
}
private IList<User> users = new List<User>();
public virtual IList<User> Users
{
get { return users; }
set { users = value; }
}
}
我的問題是:我該怎麼辦使用條件最好的搜索?我需要一個IList的結果。 感謝您的回答! :)
我如何使用DetachedCriteria獲取列表()返回? –
2011-05-25 12:44:22
我想出瞭如何運行它,但它給出了錯誤:「非法語法靠近集合:a 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。 異常詳細信息:NHibernate.QueryException:收集附近的非法語法:「 – 2011-05-25 12:53:04
修改了它,你可以嘗試一個。我仍然沒有看到像一個實體映射的地址是什麼,但只是一個字符串集合 - 這是怎麼回事你的數據庫? – Fourth 2011-05-25 13:01:03