NHibernate映射:外键上的简单连接 桌子

NHibernate映射:外键上的简单连接 桌子,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,我将尖括号改为常规括号,因为我不想考虑这个小的标记编辑器将要做什么 丑陋的 我期望的SQL是 SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c ON u.CurrencyId = c.CurrencyId 但他却固执地给了我 SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c O

我将尖括号改为常规括号,因为我不想考虑这个小的标记编辑器将要做什么

丑陋的 我期望的SQL是

SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c ON u.CurrencyId = c.CurrencyId 但他却固执地给了我

SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c ON u.UserId = c.CurrencyId -- DANG IT! 这是真的不被支持,还是我忽略了一些显而易见的事情?为了单个实体的映射,是否可以从另一个表中循环一个额外的列


谢谢

连接映射是一个PITA!这里的问题是Hibernate希望连接映射从父表映射到子表,而您是从子表连接到父表

从本质上讲,联接映射旨在使具有一对一关系且父表联接到子表的表上的联接变得容易


我认为在您的情况下,您希望使用多对一映射,而不是联接

谢谢,是的,这就是我的想法。但是,如果我假设不能使用IUserType进行多对一映射工作,那么我的假设正确吗?我真的不想让Currency作为一个持久实体,我想要三个字母的代码,这样我就可以在这个第三方提供的Currency对象上调用Currency.GetCurrency。我的想法是我必须用我自己的类型来包装那个货币对象。你用的是NH的哪个版本?我用的是NHibernate-2.1.0.CR1。 SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c ON u.CurrencyId = c.CurrencyId SELECT u.UserId, c.IsoCode4217 FROM Users AS u INNER JOIN Currencies AS c ON u.UserId = c.CurrencyId -- DANG IT!