could not resolve property:检查不出错误

willxuecn 2016-02-25 01:40:34
org.hibernate.QueryException: could not resolve property: category.fatherid of: cn.com.jxzy.domain.Book
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:81)
at org.hibernate.persister.entity.AbstractPropertyMapping.toColumns(AbstractPropertyMapping.java:96)
at org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:62)
at org.hibernate.persister.entity.AbstractEntityPersister.toColumns(AbstractEntityPersister.java:1457)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getColumns(CriteriaQueryTranslator.java:483)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.findColumns(CriteriaQueryTranslator.java:498)
at org.hibernate.criterion.SimpleExpression.toSqlString(SimpleExpression.java:68)
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getWhereCondition(CriteriaQueryTranslator.java:380)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:102)
at org.hibernate.loader.criteria.CriteriaJoinWalker.<init>(CriteriaJoinWalker.java:82)
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:92)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1697)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347)
at org.hibernate.impl.CriteriaImpl.uniqueResult(CriteriaImpl.java:369)
at cn.com.jxzy.commons.BaseDaoImpl.selectByPage(BaseDaoImpl.java:62)
at cn.com.jxzy.persist.impl.BookDaoImpl.findBook(BookDaoImpl.java:63)
at cn.com.jxzy.service.impl.BookServiceImpl.findBook(BookServiceImpl.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at com.sun.proxy.$Proxy10.findBook(Unknown Source)
at cn.com.jxzy.web.actions.PageBookAction.findBooks(PageBookAction.java:55)
at cn.com.jxzy.web.actions.PageBookAction.sourcePage(PageBookAction.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
....................


配置文件的名字什么的都检查过,都写对了
book.hbm.xml
<hibernate-mapping>
<class name="cn.com.jxzy.domain.Book" table="book" catalog="jxzy">
<id name="bid" type="java.lang.Integer">
<column name="bid" />
<generator class="identity" />
</id>
<many-to-one name="category" class="cn.com.jxzy.domain.Category" fetch="select">
<column name="category_id" />
</many-to-one>
<property name="bookname" type="java.lang.String">
<column name="bookname" />
</property>


category.hbm.xml
<hibernate-mapping>
<class name="cn.com.jxzy.domain.Category" table="category" catalog="jxzy">
<id name="cid" type="java.lang.Integer">
<column name="cid" />
<generator class="increment" />
</id>
<property name="catename" type="java.lang.String">
<column name="catename" />
</property>
<property name="fatherid" type="java.lang.Integer">
<column name="fatherid" />
</property>
<set name="books" inverse="true">
<key>
<column name="category_id" />
</key>
<one-to-many class="cn.com.jxzy.domain.Book" />
</set>
</class>
</hibernate-mapping>

dao层的方法
public PageUtil<Book> findBook(Book book, SearchInfo searchInfo, int index) {
DetachedCriteria dc = DetachedCriteria.forClass(entityClass);
if (book != null) {
if (book.getCategory() != null) {
if (book.getCategory().getCid() != null) {
dc.add(Restrictions.eq("category.cid", book.getCategory().getCid()));
}
if (book.getCategory().getFatherid() != null) {
dc.add(Restrictions.eq("category.fatherid", book.getCategory().getFatherid()));
}
}
if (book.getAuthor() != null && book.getAuthor().length() > 0) {
dc.add(Restrictions.like("author", "%" + book.getAuthor() + "%"));
}
if (book.getBookname() != null && book.getBookname().length() > 0) {
dc.add(Restrictions.like("bookname", "%" + book.getBookname() + "%"));
}
if (book.getIsbn() != null && book.getIsbn().length() > 0) {
dc.add(Restrictions.like("isbn", "%" + book.getIsbn() + "%"));
}
if (book.getSeries() != null && book.getSeries().length() > 0) {
dc.add(Restrictions.like("series", "%" + book.getSeries() + "%"));
}
}
if (searchInfo != null) {
if (searchInfo.getMinDate() != null && searchInfo.getMaxDate() != null) {
dc.add(Restrictions.between("publishdate", searchInfo.getMinDate(), searchInfo.getMaxDate()));
}
if (searchInfo.getSearchCode() != null && searchInfo.getSearchCode().length() > 0) {
dc.add(Restrictions.or(Restrictions.like("isbn", "%" + searchInfo.getSearchCode() + "%"), Restrictions.or(Restrictions.like("bookname", "%" + searchInfo.getSearchCode() + "%"), Restrictions.like("author", "%" + searchInfo.getSearchCode() + "%"))));
}
}
dc.addOrder(Order.desc("publishdate"));
return this.selectByPage(dc, index);
}


basedao的分页查询

public PageUtil<T> selectByPage(DetachedCriteria dc, int pageNum) {
Session session = this.getHibernateTemplate().getSessionFactory().getCurrentSession();
dc.setProjection(Projections.rowCount());
Criteria criteria = dc.getExecutableCriteria(session);
long rowCount = (Long) criteria.uniqueResult();
PageUtil<T> pageUtil = new PageUtil<T>(pageNum, rowCount);
dc.setProjection(null);
Criteria c = dc.getExecutableCriteria(session);
c.setFirstResult((pageNum - 1) * Constant.PAGE_SIZE);
c.setMaxResults(Constant.PAGE_SIZE);
List<T> list = c.list();
pageUtil.setList(list);
return pageUtil;
}


category.cid查询的时候都没报错,category.fatherid查询就报错,名字检查过了应该都没写错,怎么回事?
...全文
670 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Royal_lr 2016-03-02
  • 打赏
  • 举报
回复
category的fatherid不能解析,,
willxuecn 2016-03-01
  • 打赏
  • 举报
回复
换了sql分页 那个真是hibernate的bug吗
家里敷泥呀 2016-02-26
  • 打赏
  • 举报
回复
at cn.com.jxzy.commons.BaseDaoImpl.selectByPage(BaseDaoImpl.java:62) at cn.com.jxzy.persist.impl.BookDaoImpl.findBook(BookDaoImpl.java:63) at cn.com.jxzy.service.impl.BookServiceImpl.findBook(BookServiceImpl.java:96) BaseDaoImpl.java:62行是哪一行?
willxuecn 2016-02-26
  • 打赏
  • 举报
回复
any people?
willxuecn 2016-02-26
  • 打赏
  • 举报
回复
引用 2 楼 Q80470101 的回复:
at cn.com.jxzy.commons.BaseDaoImpl.selectByPage(BaseDaoImpl.java:62)
at cn.com.jxzy.persist.impl.BookDaoImpl.findBook(BookDaoImpl.java:63)
at cn.com.jxzy.service.impl.BookServiceImpl.findBook(BookServiceImpl.java:96)

BaseDaoImpl.java:62行是哪一行?

就是调用basedao分页方法的那行
return this.selectByPage(dc, index);

google了一天也没找到答案
有人说这是hibernate的bug

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧