NHibernate:如何使用 Criteria API 排除属于联接一部分的类
我对 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>()
;
在完美的世界中,我可以更新数据库模式以使其更有意义,但可惜我不能。对此的任何帮助将不胜感激。
I am still new to Hibernate and am attempting to use it for a web site I have inherited. Unfortunately that means sometimes the db schemas don't always make sense.
With that said, I am trying to build the following HQL query using the Criteria API
from TableB b where b.id = :id and b.TableAProperty.UserId = :userId
The above HQL statement generate SQL which will select and return TableB only which is what I want to happen. However using the Critera API statements shown below, the generated SQL statement selects the fields for TableB and TableA.
DataProvider.Session
.CreateCriteria<TableB>()
.Add(Expression.Eq("Id", id))
.CreateCriteria("TableA")
.Add(Expression.Eq("UserId", userId))
.UniqueResult<TableB>()
;
In a perfect world I could update the db schemas to make more sense, but alas I cannot. Any help on this would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您的问题没有显示与 TableA 和 TableB 关联的类,因此我假设这些类是 TableA 和 TableB,并且 TableB 有一个名为 TableA 的属性。
Your question doesn't show the classes associated with TableA and TableB, so I'm going to assume that the classes are TableA and TableB and that TableB has a property called TableA.