gpt4 book ai didi

java - 关于 Hibernate API 中 Criteria.createCriteria 的问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:34 25 4
gpt4 key购买 nike

所以我仍在努力让自己熟悉 Hibernate Criteria API,并且我有这段 Java 代码,我想寻求澄清。

Criteria c = super.getSession().createCriteria(PpNnCtDetail.class);
c.add(Restrictions.between("commencementDate", fromDate, toDate);

这部分我明白发生了什么 - 用 SQL 来表达它就像 - 如果我错了请纠正我,

SELECT * FROM PpNnCtDetail WHERE commencementDate >= fromDate AND commencementDate <= toDate;

问题出在上面两行之后的代码。

c = c.createCriteria("nnContractTbl");
c.createCriteria("progCategory").add(Restrictions.in("progCategoryId", allProgCat));
c.createCriteria("acadOrgTbl");
c.createCriteria("serviceType");
c.createCriteria("campusTbl");
return c.list();

第一行试图完成什么?回到 c 的赋值是多余的吗?

事实上,c.createCriteria 试图实现的目标是什么?等效的 SQL 查询会是什么样子?更重要的是,c.list() 会返回什么?

最佳答案

c = c.createCriteria("nnContractTbl"); 上的赋值是多余的,createCriteria 和几乎所有 Criteria方法修改调用它们的实例,并返回实例本身以进行方法链接。所以你可以像这样链接调用:

return super.getSession().createCriteria(PpNnCtDetail.class)
.add(Restrictions.between("commencementDate", fromDate, toDate)
.createCriteria("nnContractTbl")
.createCriteria("progCategory").add(Restrictions.in("progCategoryId", allProgCat))
.createCriteria("acadOrgTbl")
.createCriteria("serviceType")
.createCriteria("campusTbl")
.list();

关于该序列的结果,Criteria.createCriteria(association)将导致标准中已有的数据与在属性 association 建模的关联中设计的表之间的内部联接。它还将“根”(正如他们在 Javadoc 中声明的那样)关联实体中的条件,以便在进一步调用 createCriteria(association) 时,association 指的是一个在最后一个“根”实体上声明的关联属性。

它是 Criteria.createCriteria(association, joinType)joinType CriteriaSpecification.INNER_JOIN 的简写。

关于java - 关于 Hibernate API 中 Criteria.createCriteria 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7497414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com