即使有数据,JPQL 也不返回任何结果

Posted

技术标签:

【中文标题】即使有数据,JPQL 也不返回任何结果【英文标题】:JPQL returning no results eventhough there is data 【发布时间】:2017-10-14 04:18:58 【问题描述】:

在我的带有 H2 DB 的 Spring JPA 中,尽管 DB 中有值,但当前没有返回任何值。

我的数据库有值:

INSERT INTO public.ToDo values (1, 'Java', 'completed');
INSERT INTO public.ToDo values (2, '.NET', 'pending');
INSERT INTO public.ToDo values (3, 'Word', 'completed');
INSERT INTO public.ToDo values (4, 'PPT', 'pending');

访问状态值(第3行)的DAO方法如下:

    public List<ToDo> getItemsWithStatus(String status) 
    TypedQuery<ToDo> query = em.createQuery(
            "SELECT u FROM ToDo u WHERE u.status LIKE :someSymbol ORDER BY 
    u.id", ToDo.class);
    query.setParameter("someSymbol", "%status%");
    return query.getResultList();

ToDo实体代码如下:

@Entity
@Table
public class ToDo
@Id
private int id;
@Column
private String name;
@Column
private String status;

//getters and setters

请在下面的图片中找到显示状态值为“已完成”的调试图片

赞赏!!!

【问题讨论】:

你从不使用status参数。 【参考方案1】:

您正在搜索“状态”而不是变量状态所持有的值。你的 setParameter 调用应该是

query.setParameter("someSymbol", "%" + status + "%");

【讨论】:

谢谢@Eelke,这就是问题所在。

以上是关于即使有数据,JPQL 也不返回任何结果的主要内容,如果未能解决你的问题,请参考以下文章

即使查询返回结果,Twitter-typeahead 也不显示任何结果

即使文件存在,readFileSync也不返回任何数据

Query.getResultList() 即使sql表有行也不返回结果

即使使用 DefaultIfEmpty,Linq 查询也不返回预期结果

如何处理 JPQL 查询返回的 Object 类型?

我可以将 JPQL 的结果限制为只返回一个结果吗?