JPQL LIKE无法正常工作

时间:2014-08-20 15:54:46

标签: 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 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;
}

正如我的JPQL NamedQuery所述,UserAccount有一个名为email的字段。当我使用serachText运行此代码作为“无论什么”时,它不会返回任何内容。但是,当我运行相应的MySql SQL语句时:

select * from user_account where email like '%whatever%'; 

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

1 个答案:

答案 0 :(得分:0)

我找到了答案。在我调用错误的NamedQuery时,这是一个逻辑错误。我想自己回答这个问题,因为在评论中我注意到我应该查看正在执行的REAL SQL。这让我可以看到发生了什么。

如果您不确定如何做到这一点......就像我一样,我在评论中发布了答案的链接。