我有一个带有2个字段的对象O - A和B.如何从数据库中获取O以便只获取字段A?
当然,我的真实应用程序包含更多字段的对象,但是有两个字段足以理解主体。
我正在使用NHibernate 2.1。
感谢。
修改
我想澄清一下。我需要获取类型为O的对象。有时我会想要获取完整的对象 - 这意味着从数据库值设置A和B字段。但在其他情况下,我想从数据库值中设置A字段来获取O对象。
答案 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
构造,它允许您只获取字段的子集。但是,返回的对象无法保存回数据库。
作为替代方案,您可以使用一组有限的属性创建其他类,并将这些属性映射到相关表中。