我有一个带有 2 个字段的对象 O - A 和 B。如何从数据库中获取 O 以便只获取字段 A?
当然,我的真实应用程序有更多字段的对象,但是两个字段足以理解主体。
我正在使用 NHibernate 2.1。
谢谢。
编辑:
我想澄清一下。我需要获取 O 类型的对象。有时我想获取完整的对象——这意味着 A 和 B 字段都是从数据库值中设置的。但在其他情况下,我想仅使用从数据库值中设置的 A 字段来获取 O 对象。
我有一个带有 2 个字段的对象 O - A 和 B。如何从数据库中获取 O 以便只获取字段 A?
当然,我的真实应用程序有更多字段的对象,但是两个字段足以理解主体。
我正在使用 NHibernate 2.1。
谢谢。
编辑:
我想澄清一下。我需要获取 O 类型的对象。有时我想获取完整的对象——这意味着 A 和 B 字段都是从数据库值中设置的。但在其他情况下,我想仅使用从数据库值中设置的 A 字段来获取 O 对象。
使用投影将结果集缩小到所需的列,并使用结果转换器将结果转换为所需的类型。
这将返回瞬态对象而不是持久实体。
// 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>();
HQL 有一个select new
构造,它允许您仅获取字段的子集。但是,返回的对象不能保存回 DB。
作为替代方案,您可以创建具有一组有限属性的附加类,并将它们映射到相关的表上。