2

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

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

我正在使用 NHibernate 2.1。

谢谢。

编辑:

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

4

2 回答 2

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>();
于 2010-03-18T14:26:42.890 回答
0

HQL 有一个select new构造,它允许您仅获取字段的子集。但是,返回的对象不能保存回 DB。

作为替代方案,您可以创建具有一组有限属性的附加类,并将它们映射到相关的表上。

于 2010-03-18T13:36:21.200 回答