我仍然是 Hibernate 的新手,并且正在尝试将它用于我继承的网站。不幸的是,这意味着有时数据库模式并不总是有意义。
话虽如此,我正在尝试使用 Criteria API 构建以下 HQL 查询
from TableB b where b.id = :id and b.TableAProperty.UserId = :userId
上面的 HQL 语句生成 SQL,它将仅选择并返回 TableB,这正是我想要发生的。但是,使用如下所示的 Critera API 语句,生成的 SQL 语句会选择 TableB 和 TableA 的字段。
DataProvider.Session
.CreateCriteria<TableB>()
.Add(Expression.Eq("Id", id))
.CreateCriteria("TableA")
.Add(Expression.Eq("UserId", userId))
.UniqueResult<TableB>()
;
在一个完美的世界中,我可以更新数据库模式以使其更有意义,但可惜我不能。对此的任何帮助将不胜感激。