我试图了解Hibernate中的Example查询如何工作。
deptId是部门表的主键。
我最初尝试过此代码:
Dept department = new Dept();
department.setDeptId(3);
//department.setDeptName("ABCD");
Criteria criteria = session.createCriteria(Dept.class).add(Example.create(department));
[执行此代码,不会过滤具有deptId = 3的行的结果,即,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进行过滤
请告知示例查询为什么会这样。
从documentation开始,示例查询(QBE)将忽略主键。
对于简单主键,如果您知道PK的值,则可以使用load()
或get()
代替。
对于复合主键,我同意有必要在QBE中支持主键。但是,此请求仍为unresolved。