Jpa 我喜欢不工作

Jpa 我喜欢不工作,jpa,jpql,Jpa,Jpql,我有这样一个JPQL查询: @NamedQuery( name = "UserAccount.searchEmail", query = "SELECT u FROM UserAccount u WHERE u.email LIKE :searchText") 然后,我使用以下代码设置searchText参数: public List<UserAccount> search(String namedQuery, String searchTe

我有这样一个JPQL查询:

@NamedQuery(
        name = "UserAccount.searchEmail",
        query = "SELECT u FROM UserAccount u WHERE u.email LIKE :searchText")
然后,我使用以下代码设置searchText参数:

    public List<UserAccount> search(String namedQuery, String searchText) {
    Query query = getEntityManager().createNamedQuery(namedQuery);
    query.setParameter("searchText", "%" + searchText + "%");
    try
    {
        return query.getResultList();
    }
    catch(Exception e)
    {
        logger.log(Level.SEVERE, "Error when searching UserAccount",e);
    }
    return null;
}

它按预期工作。我的Java代码的JPQL语句有什么问题吗?

我找到了答案。对我来说,调用错误的NamedQuery是一个逻辑错误。我想自己回答这个问题,因为注释中指出,我应该查看正在执行的
REAL
SQL。这让我看到了正在发生的事情


如果你不确定怎么做。。。正如我所做的那样,我在评论中发布了一个指向答案的链接。

而JPA实现调用的SQL是?在它的日志中,NeilStockton是个好主意。如何找到JPA调用的SQL?那会记录在哪里?@NeilStockton Nevermind,我在这里找到了答案:。我将运行代码并在一秒钟后发布到这里。下面是我将要做的。1.移除catch块,让异常冒泡,以确保我不会错过它。2.使用调试器并检查searchText是否为您认为的内容。3.使用空白字符串进行测试,并检查它是否检索表中的所有行。如果所有这些测试都失败,可能是因为您在启动应用程序时清除了表,或者因为您没有使用您认为正在使用的数据库,或者因为您在执行SQL时看到的数据尚未提交,所以表确实是空的。
select * from user_account where email like '%whatever%';