我试图了解Hibernate中的Example查询是如何工作的。
deptId是departments表的主键。
我最初尝试过这段代码:
Dept department = new Dept();
department.setDeptId(3);
//department.setDeptName("ABCD");
Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));
执行此代码时,结果不会过滤到具有deptId = 3的行w.r.t,即SQL查询等同于从Dept表中选择所有记录,其中1 = 1。
但如果我考虑这段代码:
Dept department = new Dept();
//department.setDeptId(3);
department.setDeptName("ABCD");
Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));
结果将在deptName即ABCD
中过滤掉请告知为什么示例查询的行为与此类似。
答案 0 :(得分:3)
从documentation开始,按示例查询(QBE)将忽略主键。
对于简单的主键,如果您知道PK的值,则可以改为使用load()
或get()
。
对于复合主键,我同意必须支持QBE中的主键。但是,此请求仍为unresolved。