67,513
社区成员
发帖
与我相关
我的任务
分享
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)
....................
<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>
<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>
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);
}
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;
}