0

假设,我有一个 Customer 类,其中包含一些属性,例如

  • 姓名,
  • ID,
  • CompetentAuthority 类的对象等。

名称、id 等映射在 .hbm 文件中,但我已经收集了 CompetentAuthority 对象,并且我没有在 .hbm 文件中为 CompetentAuthority(一对多)做任何输入。

在 CompetentAuthority 类中,我采用了 Customer 对象,在 CompetentAuthority 的 .hbm 文件中,我做了多对一的关系。

现在,我想要具有 CompetentAuthority 列表的客户列表,但由于它只是一个对象并且没有完成映射,标准 API 不允许我进行内部连接;它给了我类似“无法解析属性”的错误

有什么办法可以做到这一点。

4

1 回答 1

0

如果您想使用 Criteria API 来应用 INNER JOIN,那么您不能这样做。CompetentAuthority 对象需要使用 NHibernate 进行映射,并且需要修改 Customer 对象的映射文件以建立两个实体之间的关系。

如果由于某种原因您无法映射 CompetentAuthority,您可以利用混合 ISession.CreateSQLQuery() 方法和 Transformers.AliasToBean() 方法,这将允许您对未映射的实体进行水合。

有关此技术的更多信息,请参阅标题为“返回非托管实体”的官方 NHibernate 文档部分或搜索使用 AliasToBean() 方法: http://nhibernate.info/doc/nh/en/index 。 html#d0e11066

于 2012-09-27T15:11:03.833 回答