gpt4 book ai didi

hibernate - 我可以在 NHibernate 中查询派生字段吗?

转载 作者:行者123 更新时间:2023-12-02 05:28:59 24 4
gpt4 key购买 nike

是否可以对实体中的派生字段添加限制,即。一个不坚持的?例如,如果这是我的实体:

public class Employee 
{
public long Id { get; set; }
public string Forename { get; set; }
public string Surname {get; set; }
public string FullName { get { return Forename + " " + Surname; }}
}

这是映射:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
namespace="Domain.Entities"
assembly="Domain">
<class name="Employee" table="`Employee`">
<id name="Id" column="Id" type="long">
<generator class="identity"/>
</id>
<property name="Forename"/>
<property name="Surname"/>
</class>
</hibernate-mapping>

这是我的查询:

public Employee GetByFullName(string fullName)
{
return _session
.CreateCriteria<Employee>
.Add(Restrictions.Eq("FullName", fullName))
.List<Employee>();
}

请忽略我可以自己编写查询这一事实,这是一个简单的演示示例。这在复杂得多的场景中会很有用。

最佳答案

这取决于,基本上如果你可以用SQL复制派生字段就可以完成(所以基本上可以完成,但它的实用性有所不同)。在您的示例中,您需要将 Fullname 属性映射为:

<property name="Fullname" formula="Forename + ' ' + Surname"/>

然后为了阻止 NHibernate 提示你需要为 Fullname 定义一个空的 setter:

public virtual string Fullname {
get { return Forename + " " + Surname; }
set { } // do nothing
}

然后您将能够查询 Fullname,NHibernate 会将公式正确地插入到 sql 中。

关于hibernate - 我可以在 NHibernate 中查询派生字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com