Jpa 我喜欢不工作
我有这样一个JPQL查询: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
@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%';