【发布时间】:2016-10-17 12:01:12
【问题描述】:
我正在通过用户 ID 从购买表中获取记录,它工作正常,但现在想添加一个条件,即 (is_approved) 列值 = 1,我在同一个查询中添加了这个条件,它正在通过错误
//我的DAOHibernate方法如下
public int getNumOfPurchasesByUserId(Integer userId) {
System.out.println("########################### Calling getNumOfPurchasesByUserId %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
String sql = "select count(p) from " + Purchase.class.getName() + " p where p.userid = :userid and p.is_approved=1";
Session session = null;
Query q = null;
int count = 0;
try {
session = getHibernateTemplate().getSessionFactory().openSession();
q = session.createQuery(sql);
q.setInteger("userid", userId);
try {
count = ((Long)q.uniqueResult()).intValue();
} catch (Exception e) {}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (session != null) {
session.close();
}
}
return count;
}
//我的错误是
########################### Calling getNumOfPurchasesByUserId %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
org.hibernate.QueryException: could not resolve property: is_approved of: com.newscom.model.Purchase [select count(p) from com.newscom.model.Purchase p where p.userid = :userid and p.is_approved=1]
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:75)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1465)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:315)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:487)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:611)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:263)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:210)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:117)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:113)
at org.hibernate.hql.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:880)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1330)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4471)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:3944)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2047)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1975)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:831)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:617)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:301)
at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:244)
at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:256)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:187)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:138)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
at com.newscom.dao.hibernate.PurchaseDAOHibernate.getNumOfPurchasesByUserId(PurchaseDA
//购买中
@Entity
@Table(name = "Purchase")
@NamedQueries(value = {
@NamedQuery(name = "GetPurchaseByUserID", query = "SELECT p from Purchase p where p.userid = :userid order by p.status, p.purchaseid desc"),
private boolean isApproved;
private Date approvalTime;
private Integer approvedBy;
@Column(name="is_approved")
public boolean getIsApproved() {
return isApproved;
}
public void setIsApproved(boolean isApproved) {
this.isApproved = isApproved;
}
【问题讨论】:
-
可以发
Purchase的代码吗? -
您好,这是命名查询..
-
请贴出实体的全部代码。
-
该列在该实体中出现。
标签: java mysql sql spring hibernate