非常急啊 一对多双向关联的问题 大伙帮帮忙啊!!!!!!! 88分献上
我用main 方法测试 报错内容是:
Exception in thread "main" java.lang.ClassCastException: org.hibernate.collection.PersistentSet
at T.main(T.java:50)
代码如下
Acceptence.hbm.xml
<hibernate-mapping> <class name="com.plat.acc.dao.Acceptence" table="syn_acceptence" schema="dbo" catalog="test"> <id name="id" type="java.lang.Integer"> <column name="id"/> <generator class="assigned" /> </id> <property name="companyNo" type="java.lang.String"> <column name="company_no" length="200" not-null="true" /> </property> <property name="bankId" type="java.lang.Integer"> <column name="bank_id" not-null="true" /> </property> <property name="factoryId" type="java.lang.Integer"> <column name="factory_id" not-null="true" /> </property> <property name="iscomplete" type="java.lang.String"> <column name="iscomplete" length="1" /> </property> <property name="lasttimesstamp" type="java.lang.String"> <column name="lasttimesstamp" length="20" /> </property> <property name="isstage" type="java.lang.String"> <column name="isstage" length="1" /> </property> <property name="remark" type="java.lang.String"> <column name="remark" length="2000" /> </property> <set name="synReceipt" table="syn_receipt" cascade="all" lazy="false" inverse="true"> <key column="acc_id" /> <one-to-many class="com.plat.receipt.dao.SynReceipt" /> </set> </class></hibernate-mapping>
<hibernate-mapping> <class name="com.plat.receipt.dao.SynReceipt" table="syn_receipt" schema="dbo" catalog="test"> <id name="id" type="java.lang.Integer"> <column name="id" /> <generator class="increment" /> </id> <property name="purQty" type="java.lang.Double"> <column name="pur_qty" precision="18" /> </property> <property name="purPrice" type="java.lang.Double"> <column name="pur_price" precision="18" /> </property> <property name="purAmt" type="java.lang.Double"> <column name="pur_amt" precision="18" /> </property> <property name="receiveQty" type="java.lang.Double"> <column name="receive_qty" precision="18" /> </property> <property name="receiveAmt" type="java.lang.Double"> <column name="receive_amt" precision="18" /> </property> <property name="logistic" type="java.lang.String"> <column name="logistic" length="200" /> </property> <property name="receiveDate" type="java.lang.String"> <column name="receive_date" length="20" /> </property> <many-to-one name="acceptence" class="com.plat.acc.dao.Acceptence" lazy="false" fetch="select" cascade="all"> <column name="acc_id" not-null="true" /> </many-to-one> <property name="productId" type="java.lang.Integer"> <column name="product_id" not-null="true" /> </property> <property name="financeNo" type="java.lang.String"> <column name="finance_no" length="200" /> </property> </class></hibernate-mapping>
package com.plat.acc.dao;/** * SynAcceptence entity. * * @author MyEclipse Persistence Tools */public class Acceptence extends AbstractAcceptence implements java.io.Serializable { // Constructors /** * */ private static final long serialVersionUID = 1L; /** default constructor */ public Acceptence() { } /** minimal constructor */ public Acceptence(Integer id, String companyNo, Integer bankId, Integer factoryId) { super(id, companyNo, bankId, factoryId); } /** full constructor */ public Acceptence(Integer id, String companyNo, Integer bankId, Integer factoryId, String iscomplete, String lasttimesstamp, String isstage, String remark) { super(id, companyNo, bankId, factoryId, iscomplete, lasttimesstamp, isstage, remark); }}public Acceptence findById(java.lang.Integer id) { log.debug("getting SynAcceptence instance with id: " + id); try { Acceptence instance = (Acceptence) getHibernateTemplate() .get("com.plat.acc.dao.Acceptence", id); return instance; } catch (RuntimeException re) { log.error("get failed", re); throw re; } } public static void main(String[] args) { AcceptenceDAO ad=(AcceptenceDAO)BeanUtil.getBean("AcceptenceDAO");//我自己封装了下BeanUtil 此行没问题 Set s=(HashSet)ad.findById(1).getSynReceipt(); System.out.println(s.size()); SynReceipt receipt=dao.findById(1); }}