日期:2014-05-18  浏览次数:20680 次

多表映射问题
第一个映射文件
<hibernate-mapping package="com.hystu.entity">
<class name="Category" table="tbCategory">
<id name="cateId" column="Cate_Idbig" type="long">
<generator class="hilo">
<param name="table">tbHilo</param>
<param name="column">Hilo_NextHyint</param>
</generator>
</id>
...................
</class>
</hibernate-mapping>
第二个映射文件
<hibernate-mapping package="com.hystu.entity">
<class name="SecondCategory" table="tbSecondCategory">
<id name="scId" column="Cats_Idbig" type="long">
<generator class="hilo">
<param name="table">tbHilo</param>
<param name="column">Hilo_NextHyint</param>
</generator>
</id>
  ..........................  
<many-to-one name="cate" column="Cats_Cate_Idbig" class="Category" lazy="false"/>
..........................
</class>
</hibernate-mapping>
第三个映射文件
<hibernate-mapping package="com.hystu.entity">
<class name="Product" table="tbProduct">
<id name="proId" column="Pro_Idbig" type="long" >
<generator class="hilo">
<param name="table">tbHilo</param>
<param name="column">Hilo_NextHyint</param>
</generator>
</id>
  ..................... 
<many-to-one name="cate" column="Pro_Cate_Idbig" class="Category" />
<many-to-one name="sc" column="Pro_Cats_Idbig " class="SecondCategory" />
.....................
</class>
</hibernate-mapping>

public List findListofCateProductOrder(int start, int end ,long cate){
final long cid=cate;
final int s=start;
final int e=end;
List list=this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException, SQLException {
String sql="select * from tbProduct where
tbProduct.Pro_Cate_Idbig=:cid";
Query query=session.createSQLQuery(sql).addEntity(Product.class);
query.setParameter("cid", cid);
query.setFirstResult(s);
query.setMaxResults(e);
List list=query.list();
if(list.isEmpty())
{
log.error("list not found"+" "+sql);
throw new HyStuObjectNotFoundException("list not found");
}
return list;
}
});
return list;
}
  报的是 Caused by: java.sql.SQLException: Column 'Pro_Cats_Idbig ' not found.
at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:929)
at com.mysql.jdbc.ResultSet.getLong(ResultSet.java:2572)
at org.hibernate.type.LongType.get(LongType.java:28)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.ManyToOneType.hydrate(ManyToOneType.java:103)