SQL:
String hql1 = "SELECT /* PARALLEL(MVR,16) PARALLEL(MVRS,16)*/ * FROM
ICM MINUS SELECT I1.* FROM ICM I1 , C1_ICM_STATIC I2 WHERE
I1.METRIC_DIRECTION=I2.METRIC_DIRECTION AND
I1.METRIC_NAME=I2.METRIC_NAME AND I1.METRIC_UNIT=I2.METRIC_UNIT AND
I1.TERMINATION_POINT_ID=I2.TERMINATION_POINT_ID AND
I1.TERMINATION_POINT_NAME=I2.TERMINATION_POINT_NAME AND
I1.TERMINATION_POINT_TYPE=I2.TERMINATION_POINT_TYPE";
条件查询
icms1 = (List<ICM>) session.createCriteria(ICM.class, hql1).list();
我使用 SQL Developer 执行了 hql1
,然后只得到了一个结果
,但是当我将 SQL 查询与 Criteria
集成时,它返回了我ICM
表中的所有记录
。
如果 SQL
查询在 SQL Developer 中仅返回一个结果,为什么标准 API 会返回 ICM
表中的所有记录?
最佳答案
Why criteria API returning all records in ICM table?
从技术上讲,您没有使用条件 api 进行关联。
尝试这样的事情。 Refer.
return criteria.createCriteria(A.class)
.createCriteria("b", "join_between_a_b")
.createCriteria("c", "join_between_b_c")
.createCriteria("d", "join_between_c_d")
.add(Restrictions.eq("some_field_of_D", someValue));
关于java - Criteria 查询返回所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29598794/