HibernateTemplate findByExample不返回任何结果

Jas*_*son 4 java orm spring hibernate query-by-example

我正在尝试使用Hibernate QBE(实际上是Spring的HibernateTemplate.findByExample())来返回用户名列表.我使用"已知良好"值进行搜索(用户名"JOHN.SMITH"确实存在于数据库中).

不幸的是,我没有得到任何结果.以下是单元测试.

@Test
public void testQueryByExample() {

    User qbeUser = new User();
    qbeUser.setUsername("JOHN.SMITH");

    List<User> userList = userDao.queryByExample(qbeUser);
    Assert.notNull(userList);
    Assert.isTrue(userList.size() > 0, "List of returned users must not be 0");

}
Run Code Online (Sandbox Code Playgroud)

queryByExample()方法在通用DAO中定义:

@SuppressWarnings("unchecked")
public List<T> queryByExample(T obj) {
    return getHibernateTemplate().findByExample(obj);
}
Run Code Online (Sandbox Code Playgroud)

QBE是否需要任何特殊配置才能工作?

Jas*_*son 7

这对我来说纯粹是愚蠢的.

作为例子使用的类中有一些int和booleans(primitives).由于这些值默认为0和false,因此查询失败.

  • 是的,`findByExample()`包括其条件中的所有原始属性,但忽略其值为null的所有非原始属性.但是,Hibernate"Example"类具有更灵活的条件选项.请参阅http://docs.jboss.org/hibernate/stable/core/reference/en/html/querycriteria.html#querycriteria-examples. (5认同)