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

Hibernate Named Query (HQL) search with keyword

我想创建一个查询,其中能够根据人全名或人用户名的通配符搜索来搜索人名。

其实我很困惑。你说你的实体 class 被命名为 PersonEntity.java 而你的 HQL 查询选择了 Operson。

在 HQL 中,您查询的是 Java 对象而不是实际的 table。无论如何,我假设您的实体名为 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. 你的方法应该return列表