我正在开设第一家网店,但在搜索时却无法检索对象。搜索现有产品会导致列表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);
答案 0 :(得分:0)
如果您还没有得到答案:
当您在DB中的该表上有未提交的内容时,可能会发生这种情况。在这种情况下,如果您在DB中运行相同的查询,您将得到真正的答案,但如果您从代码中运行它,它可能会返回空列表。