如何在NHibernate中获取部分对象?

时间:2010-03-18 13:32:28

标签: nhibernate partial

我有一个带有2个字段的对象O - A和B.如何从数据库中获取O以便只获取字段A?

当然,我的真实应用程序包含更多字段的对象,但是有两个字段足以理解主体。

我正在使用NHibernate 2.1。

感谢。

修改

我想澄清一下。我需要获取类型为O的对象。有时我会想要获取完整的对象 - 这意味着从数据库值设置A和B字段。但在其他情况下,我想从数据库值中设置A字段来获取O对象。

2 个答案:

答案 0 :(得分:3)

使用投影将结果集缩小到所需的列,并使用结果转换器将结果转换为所需的类型。

这将返回瞬态对象而不是持久性实体。

// select some User objects with only the Username property set
var u = session.CreateCriteria<User>()
    .SetProjection( Projections.ProjectionList().Add(Projections.Property("Username"), "Username")  ) 
    .SetResultTransformer( Transformers.AliasToBean<User>() )
    .List<User>();

答案 1 :(得分:0)

HQL有一个select new构造,它允许您只获取字段的子集。但是,返回的对象无法保存回数据库。

作为替代方案,您可以使用一组有限的属性创建其他类,并将这些属性映射到相关表中。