使用关键字进行Hibernate命名查询(HQL)搜索

时间:2015-10-07 03:48:47

标签: hibernate hql

我想创建一个查询,可以根据人名或人名的通配符搜索来搜索人名。

1 个答案:

答案 0 :(得分:1)

我其实很困惑。你说实体类名为PersonEntity.java,但你的HQL查询是从Operson中选择的。

在HQL中,您查询Java对象而不是实际表。无论如何,我将假设您的实体被命名为Operson。这是正确的代码:

public List<Operson> searchPerson(String keyword) {
    try {
        String HQL = "SELECT o FROM Operson o WHERE o.opusername like :username OR o.opname like :name";
        return em.createQuery(HQL)
          .setParameter("username", "%" + keyword.toUpperCase() + "%")
          .setParameter("name", "%" + keyword.toUpperCase() + "%")
          .getResultList();

    } catch(Exception e) {
        e.printStackTrace();
    }
}

注意:

  1. 使用参数时,不要在HQL查询中包含通配符。通过setParameter()设置实际参数时,可以使用通配符。
  2. 您的方法应该返回List