Java JSF、JPA应用程序中的SQL查询错误
我的应用程序中的查询有问题。这是执行查询的查询方法:Java JSF、JPA应用程序中的SQL查询错误,java,jpa,Java,Jpa,我的应用程序中的查询有问题。这是执行查询的查询方法: public List<Product> obtainProductListByCategory(String category) { Query query = em.createQuery("SELECT p FROM PRODUCT p WHERE CATEGORY='" + category + "'"); List<Product> ret = query.getResultLi
public List<Product> obtainProductListByCategory(String category)
{
Query query = em.createQuery("SELECT p FROM PRODUCT p WHERE CATEGORY='" + category + "'");
List<Product> ret = query.getResultList();
if (ret == null)
{
return new ArrayList<Product>();
}
else
{
return ret;
}
}
谢谢你迄今为止的帮助。在这里,我在我的应用程序中发布了另一个查询,该查询工作正常:
public void removeProduct(Product g)
{
Query q = em.createQuery("SELECT x FROM BasketItem x WHERE x.product.name = '" + g.getName() + "'");
List<BasketItem> bItems = q.getResultList();
for (BasketItem i : bItems)
{
em.remove(i);
}
q = em.createQuery("DELETE FROM Product x WHERE x.name = '" + g.getName() + "'");
q.executeUpdate();
}
}
public void removeProduct(产品g)
{
Query q=em.createQuery(“从BasketItem x中选择x,其中x.product.name='”+g.getName()+”);
List bItems=q.getResultList();
用于(篮子项目一:比特币)
{
em.remove(i);
}
q=em.createQuery(“从产品x中删除,其中x.name=”“+g.getName()+””);
q、 executeUpdate();
}
}
1)您应该在FROM
子句中为表指定别名,SELECT
子句应该包含别名产品
应为实体
em.createQuery("SELECT p FROM Product p WHERE p.category='" + category + "'");
如果PRODUCT
不是实体,则应创建nativeQuery
em.createNativeQuery("SELECT p FROM PRODUCT p WHERE p.CATEGORY='" + category + "'");
用于JPQL(Java持久性查询语言)是SQL的 2) 当JPA无法找到您的实体类时,JPA抛出
“未知抽象模式类型”
错误还要将实体添加到persistence.xml
<persistence-unit ...>
<class>com.package.Product</class>
刚刚编辑了我的问题,并将代码更改为您建议的代码。我现在收到一个新错误。@JeanCarlosSuárezMarranzini是
产品
实体吗?添加Product
classIt最好使用命名参数添加参数,而不是像这样简单地添加它们的值。请注意,这些漏洞使您的应用程序容易受到SQL注入攻击。@当JPA无法找到您的实体时,JeanCarlosSuárezMarranzini JPA将抛出“未知抽象架构类型”
错误class@JeanCarlosSuárezMarranzini可能使用区分大小写的语法分析器。尝试从产品p中选择p,其中p.category=”…
而不是大写请不要删除旧问题,否则尝试解决该问题的答案将无效。只需将相关信息添加到特定问题。@LuiggiMendoza这是真的,谢谢你的建议
<persistence-unit ...>
<class>com.package.Product</class>
SELECT p FROM Product p WHERE p.category = '...