当外键列位于联接表上时引用已连接的实体

时间:2011-09-14 09:01:23

标签: c# .net nhibernate fluent-nhibernate nhibernate-mapping

我有以下类映射: 课本:

Table("BOOKS")
Id(b => b.Id)
Join("BOOKS_EXTRA_INFO", j =>
    {
         j.Optional();
         j.References(b => b.Author);
    }

班级作者:

TABLE("AUTHORES")
Id(a => a.Id)
HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO")

此映射的问题在于,当我尝试执行以下操作时:

var a = Session.Get<Author>(1);

图书馆藏品是空的。我检查了NH生成的SQL,问题出在where子句中:

Select ... WHERE BOOKS.AUTHOR_ID = 1

正确的Where子句应该是:

Select ... WHERE BOOKS_EXTRA_INFO.AUTHOR_ID = 1

我发现了这个问题:Hibernate <set> key from joined table这与我的问题非常相似(如果不相同),但解决方案使用xml映射,我不明白如何在流畅的映射中做同样的事情。 / p>

我无法更改数据库架构。

我的问题的正确流畅映射是什么?

修改:更新了映射以显示我的确切映射。

1 个答案:

答案 0 :(得分:0)

您链接的答案指定集合上的表名称。这可以在Fluent中轻松完成:

HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO");