配置文件如下
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.sshshop.entity.Collection" table="Collection" schema="dbo" catalog="TShop" lazy="false">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="native" />
        </id>
        <many-to-one name="userInfo" class="com.sshshop.entity.UserInfo" fetch="select">
            <column name="UserID" not-null="false"  />
        </many-to-one>
        <many-to-one name="product" class="com.sshshop.entity.Product" fetch="select">
            <column name="ProductID" not-null="false"/>
        </many-to-one>
        <many-to-one name="productType" class="com.sshshop.entity.ProductType" fetch="select">
            <column name="TypeID" not-null="false" />
        </many-to-one>
        <property name="proName" type="java.lang.String">
            <column name="ProName" length="50" />
        </property>
        <property name="nameInfo" type="java.lang.String">
            <column name="NameInfo" length="50" />
        </property>
        <property name="price" type="java.lang.Double">
            <column name="Price" precision="9" />
        </property>
        <property name="discount" type="java.lang.Double">
            <column name="Discount" precision="9" />
        </property>
        <property name="amount" type="java.lang.Integer">
            <column name="Amount" />
        </property>
        <property name="hits" type="java.lang.Integer">
            <column name="Hits" />
        </property>
        <property name="describeInfo" type="java.lang.String">
            <column name="DescribeInfo" />
        </property>
        <property name="picture" type="java.lang.String">
            <column name="Picture" length="50" />
        </property>
        <property name="memo" type="java.lang.String">
            <column name="Memo" />
        </property>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.sshshop.entity.UserInfo" table="UserInfo" schema="dbo" catalog="TShop" lazy="false">
            <id name="loginId" type="java.lang.Integer">
                <column name="LoginID" />
                <generator class="native" />
            </id>
            <many-to-one name="role" class="com.sshshop.entity.Role" fetch="select">
                <column name="RoleID" not-null="false" />
            </many-to-one>
            <property name="loginName" type="java.lang.String">
                <column name="LoginName" length="20"  unique="true" />
            </property>
            <property name="realName" type="java.lang.String">
                <column name="RealName" length="20"  />
            </property>
            <property name="password" type="java.lang.String">
                <column name="Password" length="32"  />
            </property>
            <property name="gender" type="java.lang.String">
                <column name="Gender" length="2" />
            </property>
            <property name="birthday" type="java.lang.String">
                <column name="Birthday" length="20" />
            </property>
            <property name="country" type="java.lang.String">
                <column name="Country" length="50"  />
            </property>
            <property name="city" type="java.lang.String">
                <column name="City" length="50"  />
            </property>
            <property name="address" type="java.lang.String">
                <column name="Address" length="200"  />
            </property>
            <property name="tel" type="java.lang.String">
                <column name="Tel" length="20" />
            </property>
            <property name="mobile" type="java.lang.String">
                <column name="Mobile" length="11"  />
            </property>
            <property name="zip" type="java.lang.String">
                <column name="Zip" length="8" />
            </property>
            <property name="email" type="java.lang.String">
                <column name="Email" length="20"  />
            </property>
            <property name="imType" type="java.lang.String">
                <column name="ImType" length="10" />
            </property>
            <property name="imNumber" type="java.lang.String">
                <column name="ImNumber" length="10" />
            </property>
            <property name="idcardType" type="java.lang.String">
                <column name="IDCardType" length="10"  />
            </property>
            <property name="idcardNo" type="java.lang.String">
                <column name="IDCardNo" length="20"  />
            </property>
            <property name="userScore" type="java.lang.Integer">
                <column name="UserScore" />
            </property>
            <property name="lastLoginDate" type="java.util.Date">
                <column name="LastLoginDate" length="23" />
            </property>
            <set name="orderses" inverse="true" >
                <key>
                    <column name="UserID"  />
                </key>
                <one-to-many class="com.sshshop.entity.Orders" />
            </set>
            <set name="replyMessages" inverse="true">
                <key>
                    <column name="UserID"  />
                </key>
                <one-to-many class="com.sshshop.entity.ReplyMessage" />
            </set>
            <set name="collections" inverse="true" cascade="all-delete-orphan">
                <key>
                    <column name="UserID" not-null="false"/>
                </key>
                <one-to-many class="com.sshshop.entity.Collection" />
            </set>
            <set name="reviews" inverse="true">
                <key>
                    <column name="UserID"  />
                </key>
                <one-to-many class="com.sshshop.entity.Review" />
            </set>
            <set name="cartInfos" inverse="true" >
                <key>
                    <column name="LoginID"  />
                </key>
                <one-to-many class="com.sshshop.entity.CartInfo" />
            </set>
            <set name="blogMessages" inverse="true">
                <key>
                    <column name="UserID"  />
                </key>
                <one-to-many class="com.sshshop.entity.BlogMessage" />
            </set>
            <set name="shipAddresses" inverse="true" >
                <key>
                    <column name="UserID"  />
                </key>
                <one-to-many class="com.sshshop.entity.ShipAddress" />
            </set>
        </class>
    </hibernate-mapping>
      

  2.   

    org.hibernate.TransientObjectException: com.sshshop.entity.UserInfo TransientObjectException 
    异常1:not-null property references a null or transient value 
    解决方法:将“一对多”关系中的“一”方,not-null设置为false 
    (参考资料:http://www.thearcmind.com/confluence/pages/viewpage.action?pageId=212) 异常2:org.hibernate.TransientObjectException: object references an unsaved transient instance 
    解决方法:cascade="save-update,persist" 
    (参考资料:http://www.laliluna.de/254.html) 异常3:org.hibernate.QueryException: could not resolve property 
    解决方法:"from Category category where category.userID = :userID"修改为"from Category category where userID = :userID"或者"from Category category where category.user.id = :userID" 
    (参考资料:http://www.laliluna.de/277.html) 异常4:could not initialize proxy - the owning Session was closed 
    解决方法:设置lazy为false 
    (参考资料:http://forum.springframework.org/showthread.php?t=27993) <many-to-one name="userInfo" class="com.sshshop.entity.UserInfo" fetch="select" cascade="save-update" >
                <column name="UserID" not-null="false"  /> 
            </many-to-one> 这只是初步判断。最好把抛异常的方法给贴出来。
      

  3.   

    异常抛出的方法:
    public Serializable save(Object entity) throws Exception {



    return  this.getHibernateTemplate().save(entity);
    }
    我是把collectionsbean传进去的
    cartbean.setProduct(product);
    userbean.setLoginName(username);
    cb.setProduct(product);
    cb.setUserInfo(userbean);
    if (collectionbiz.SelectCollections(cb,page).size()==0) { Serializable pk=collectionbiz.saveCollections(cb, userbean);}
    这里是调用
      

  4.   

    <hibernate-mapping> 
        <class name="com.sshshop.entity.Collection" table="Collection" schema="dbo" catalog="TShop" lazy="false"> 
            <id name="id" type="java.lang.Integer"> 
                <column name="ID" /> 
    ...<many-to-one name="userInfo" class="com.sshshop.entity.UserInfo" fetch="select" cascade="save-update" > 
        <column name="UserID" not-null="false"  /> 
    </many-to-one>...
    ...
      

  5.   

    我这样应该是根据user来保存collectionbean 吧,但是他为什么会先插入个user呢,我user是有的,也就是说是游离的,是不是不应该用save,而是用update 呢
      

  6.   

    user是啥,如果是表名,最好别用
    可以使用saveorupdate,
    估计你存的时候,参数个数什么的或类型什么的出现问题了