我需要搜索所有用户名,并让应用程序打印出所有包含搜索字符串的用户名。我想我已经这样做了,但是当我执行 searchByString()
时,我没有得到任何结果。
抽象外观
/* 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")})
我无法获得完整的列表。我想知道查询是否正确运行并检索到任何内容,所以我希望能够看到它在运行时检索到的内容,这样我就可以查看为什么没有向用户显示任何内容。
最佳答案
您的查询参数看起来像您想要一个 like 子句,但您的命名查询使用了 =。变化
SELECT u FROM Userdetails u WHERE u.username = :username
到
SELECT u FROM Userdetails u WHERE u.username like :username
它应该可以工作。
关于database - 不从搜索查询中检索任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129274/