EntityManager#getResultList()返回一个空列表

时间:2013-11-25 21:32:18

标签: jpa jpql

我正在开设第一家网店,但在搜索时却无法检索对象。搜索现有产品会导致列表productHits保持为空。

(要阅读整个项目,请参阅https://github.com/gitsjogren/TareaWebShop

这是产品目录:

public final class ProductCatalogue extends AbstractDAO<Product, Long> implements IProductCatalogue {

    private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("shop_pu");
    private static Product p1;
    private static Customer c1;

@Override
    public List<Product> search(String searchWord){
        EntityManager em = emf.createEntityManager();
        List<Product> prodHits = new ArrayList<>();
        try {
            String sqlQuery = "SELECT p FROM Product p WHERE p.name LIKE :theSearch";
            TypedQuery<Product> q = em.createQuery(sqlQuery, Product.class);
            String searchQuery = "%" + searchWord + "%";
            q.setParameter("theSearch", searchQuery);
            prodHits = (List<Product>) q.getResultList();
        } catch (Exception e) {
            System.out.print(e);
        }
        em.close();
        return prodHits;
}    

我也尝试过使用NativeQuery而不是TypedQuery,但没有运气。

Query q = em.createNativeQuery(sqlQuery, Product.class);

1 个答案:

答案 0 :(得分:0)

如果您还没有得到答案:

当您在DB中的该表上有未提交的内容时,可能会发生这种情况。在这种情况下,如果您在DB中运行相同的查询,您将得到真正的答案,但如果您从代码中运行它,它可能会返回空列表。