我有以下类映射: 课本:
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>
我无法更改数据库架构。
我的问题的正确流畅映射是什么?
修改:更新了映射以显示我的确切映射。
答案 0 :(得分:0)
您链接的答案指定集合上的表名称。这可以在Fluent中轻松完成:
HasMany(a => a.Books).Table("BOOKS_EXTRA_INFO");