我正在使用Hibernate 4.3.8使用Criteria查询MS SQL数据库。我发现了Criteria的一些奇怪的行为。
如果我做了一些"深度链接"使用createAlias
,它将无效:
criteria.createAlias("user.supervision.supervisor", "uS");
实际上,根据昨天的帖子(抱歉我没有保存它),Hibernate没有" depth"的概念,如另一个问题所述。here。所以我将代码更改为:
criteria.createAlias("user", "u");
criteria.createAlias("u.supervision", "uSup");
criteria.createAlias("uSup.supervisor", "uS");
它正在发挥作用。
这是预期的行为,还是某些"隐藏"到目前为止我不知道的规则?
答案 0 :(得分:1)
这是预期的行为。您可以像现在这样使用别名来执行此操作,或者您可以按照与之关联的问题的答案中的建议嵌套标准:
criteria
.createCriteria("user")
.createCriteria("supervision")
.createCriteria("supervisor")