我需要搜索所有用户名和应用程序,以打印出包含搜索字符串的所有用户名。我想我已经这样做但是当我执行searchByString()
时,我得不到任何结果。
AbstractFacade
/* trying out a search function */
public List<T> searchByString(String string) {
System.out.println("in SearchByString");
return getEntityManager().createNamedQuery("Userdetails.findByUsername").setParameter("username", "%" + string + "%").getResultList();
}
Userdetails.java这是查询完成的地方
@Entity
@Table(name = "USERDETAILS")
@XmlRootElement
@NamedQueries({
@NamedQuery(name = "Userdetails.findAll", query = "SELECT u FROM Userdetails u"),
@NamedQuery(name = "Userdetails.findById", query = "SELECT u FROM Userdetails u WHERE u.id = :id"),
@NamedQuery(name = "Userdetails.findByUsername", query = "SELECT u FROM Userdetails u WHERE u.username = :username")})
我无法获得填写清单。我想知道查询是否正确运行并且正在检索任何内容,所以我希望能够查看它在运行时检索到的内容,因此我可以查看为什么没有任何内容显示给用户。
答案 0 :(得分:3)
您的查询参数看起来像您想要一个like子句,但您的命名查询使用=。变化
SELECT u FROM Userdetails u WHERE u.username = :username
到
SELECT u FROM Userdetails u WHERE u.username like :username
它应该有用。