我的问题是hql是否直接支持对象的计算属性, 即只在代码中存在的属性, 没有对应的数据库字段或formula.
public class Name
{
private string _firstName;
public string FirstName
{
get { return _firstName; }
private set { _firstName = value; }
}
private string _lastName;
public string LastName
{
get { return _lastName; }
private set { _lastName = value; }
}
public string FullName
{
get { return _lastName + _firstName; }
}
}
将该类作为一个Component映射, 比如在Person类中映射为
<component name="Name" class="Name">
<property name="FirstName" column="first_name" />
<property name="LastName" column="last_name" />
</component>
想在hql中使用FullName, 但是会报错, 提示FullName没有对应的映射
from Person as p where p.Name.FullName = "somename"
在这个简单的例子中, 可以将FullName映射为Formula, last_name + first_name, 但这样肯定不好, 因为计算逻辑在代码和数据库中重复了, 还有其他的一些缺点.
我的问题是hql是否直接支持对象的计算属性, 即只在代码中存在的属性, 没有对应的数据库字段或formula.
请各位高人指点一二.