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

如何在NHibernate中获取部分对象?,nhibernate,partial,Nhibernate,Partial,我有一个对象O,它有两个字段-A和B。如何从数据库中提取O,以便只提取字段A 当然,我的实际应用程序有多个字段的对象,但有两个字段就足以理解其原理 我使用的是NHibernate2.1 谢谢 编辑: 我想澄清一下。我需要获取O类型的对象。有时我需要获取完整的对象-这意味着A和B字段都是从数据库值设置的。但在其他情况下,我希望从数据库值中仅获取具有字段集的对象。HQL有一个selectnew构造,它允许您仅获取字段的子集。但是,返回的对象无法保存回数据库 或者,您可以创建具有有限属性集的附加类,并

我有一个对象O,它有两个字段-A和B。如何从数据库中提取O,以便只提取字段A

当然,我的实际应用程序有多个字段的对象,但有两个字段就足以理解其原理

我使用的是NHibernate2.1

谢谢

编辑:


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

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


或者,您可以创建具有有限属性集的附加类,并将这些类映射到相关表。

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

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

// 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>();
//选择一些仅设置了Username属性的用户对象
var u=session.CreateCriteria()
.SetProjection(Projections.ProjectionList().Add(Projections.Property(“用户名”),“用户名”))
.SetResultTransformer(Transformers.AliasToBean())
.List();

我需要能够获取与获取完整对象时相同类型的部分对象。这意味着类型O的实例只包含从DB初始化的字段A。感谢这个Lachlan。还想补充一点,您可以使用它来映射到不同的类型。我获取了一个包含所有用户属性的用户对象,并使用transformer生成了一个UserDto对象,该对象被大大简化,仅使用用户名,而我所需要的只是下拉列表中的用户名列表。