首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

多表映射有关问题

2012-01-07 
多表映射问题第一个映射文件hibernate-mapping packagecom.hystu.entityclass nameCategory tabl

多表映射问题
第一个映射文件
<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)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate (AbstractEntityPersister.java:2046)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1371)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)


at org.hibernate.loader.Loader.doList(Loader.java:2211)
... 22 more
哪位大侠能指点一下啊,都搞了几天了,还不知道哪出的问题啊!!!!!!!!!本来想给200的,它说我不能给这么多分

[解决办法]
Query query=session.createSQLQuery(sql).addEntity(Product.class); 
这句话是什么意思
[解决办法]
String sql="select * from tbProduct where 
这都是什么语句啊,看不懂啊
[解决办法]
String sql="select * from tbProduct where tbProduct.Pro_Cate_Idbig=:cid"; 
你这到底是SQL语句还是HQL语句啊,怎么混着写能不错吗
[解决办法]
你可以这样尝试
第一 将Pro_Cats_Idbig 字段改为对应持久类的属性名 并将createSQLQuery改为createQuery
第二个方法 将tbProduct.Pro_Cate_Idbig=:cid改为tbProduct.Pro_Cate_Idbig=? 并将query.setParameter("cid", cid) 改为query.setParameter(0, cid);
[解决办法]
报的是 Caused by: java.sql.SQLException: Column 'Pro_Cats_Idbig ' not found. 他说你的这个找不到,看看数据类型,跟数据库里的对不对,还是如果是String类型的要加''如果不是就别加,这地方很容易出错
[解决办法]
up

热点排行