2012-09-27 86 views
0

想,我有一個客戶類的一些屬性,如分配值映射的財產

  • 名,
  • ID,CompetentAuthority類等

姓名,身份證的

  • 對象etc被映射到.hbm文件中,但是我已經採用了CompetentAuthority對象的icollection,並且我沒有爲CompetentAuthority(一對多)在.hbm文件中做任何活動。

    在CompetentAuthority類中,我採取了Customer對象,並在CompetentAuthority的.hbm文件中做了多對一的關係。

    Nnow,我希望客戶與它的列表是CompetentAuthority名單,但由於它只是一個對象,並沒有映射完成,標準API不允許我這樣做innerjoin;它給我的錯誤,如「無法解析屬性」

    有沒有什麼辦法可以達到這個目的。

  • 回答

    0

    如果您想要使用Criteria API來應用INNER JOIN,那麼您不能這樣做。 CompetentAuthority對象需要映射到NHibernate,並且需要修改Customer對象的映射文件以建立兩個實體之間的關係。

    如果由於某些原因您無法映射CompetentAuthority,那麼可以利用混合ISession.CreateSQLQuery()方法和Transformers.AliasToBean()方法,這將允許您爲未映射的實體提供水合物。

    有關該技術的更多信息,請參閱標題爲官方NHibernate的文檔部分「返回非管理實體」或搜索周圍使用AliasToBean()方法:http://nhibernate.info/doc/nh/en/index.html#d0e11066

    +0

    嘿蘭迪,感謝您的回覆,這個解決方案適用於我:)但CreateSQLQuery()是用於SQL數據庫的權利?如果數據庫在Oracal或mysql中,它不會工作嗎?如果是的話,我可以用其他方法做到這一點。 – Amogh

    +0

    CreateSQLQuery()將適用於NHibernate支持的所有數據庫。 –

    +0

    哦...非常感謝你的幫助。 – Amogh