0
我想创建一个查询,可以根据人名或人名用户名的通配符搜索来搜索人名。Hibernate命名查询(HQL)搜索关键词
我想创建一个查询,可以根据人名或人名用户名的通配符搜索来搜索人名。Hibernate命名查询(HQL)搜索关键词
我其实很困惑。你说你实体类被命名为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();
}
}
注:
嗨,我已经把错误的名称应该是OPerson.java而不是PersonEntity.java。我已经做出了改变。如果我想要查询,该怎么办:public List searchPerson(String keyword){}。我应该怎么做? –
susu
你在查询中有2个参数,所以我认为你应该在你的方法中需要2个参数。你想用关键字参数做什么?将相同的关键字传递给您的查询中的用户名和用户参数? – Ish
是的。关键字use在我的查询中传递给用户名和用户参数。那是我混淆的事情。我知道当传递2个参数时,我应该把2个参数放在我的方法中。如果我使用关键字传递2个参数(用户名和名称)会怎么样? – susu