this.getHibernateTemplate().save(favoitem)时出错
org.hibernate.PropertyValueException: not-null property references a null or transient value: com.frogstore.pojo.Product.category
传进去的值正常
Favoriteitem的配置文件
<hibernate-mapping>
    <class name="com.frogstore.pojo.Favoriteitem" table="FAVORITEITEM" schema="ADMIN">
        <id name="favoriteitemid" type="java.lang.Long">
            <column name="FAVORITEITEMID" precision="20" scale="0" />
            <generator class="sequence"></generator>
        </id>
        <many-to-one name="favorite" class="com.frogstore.pojo.Favorite" fetch="select">
            <column name="FAVORITEID" precision="20" scale="0" not-null="true" />
        </many-to-one>
        <!-- <many-to-one name="product" class="com.frogstore.pojo.Product" fetch="select">
            <column name="PRODUCTID" precision="20" scale="0" not-null="true" />
        </many-to-one>-->
        <many-to-one name="product" column="PRODUCTID" 
        class="com.frogstore.pojo.Product" 
        lazy="false" unique="true" cascade="all" not-null="true" > 
</many-to-one> 
        <property name="favoritedate" type="java.util.Date">
            <column name="FAVORITEDATE" length="7" not-null="true" />
        </property>
    </class>
</hibernate-mapping>
Product的配置文件
<hibernate-mapping>
    <class name="com.frogstore.pojo.Product" table="PRODUCT" schema="ADMIN">
        <id name="productid" type="java.lang.Long">
            <column name="PRODUCTID" precision="20" scale="0" />
            <generator class="sequence"></generator>
        </id>
        <many-to-one name="category" class="com.frogstore.pojo.Category" fetch="select">
            <column name="CATEGORYID" precision="20" scale="0" not-null="true" />
        </many-to-one>
        <property name="pname" type="java.lang.String">
            <column name="PNAME" length="30" not-null="true" />
        </property>
        <property name="descriptions" type="java.lang.String">
            <column name="DESCRIPTIONS" length="100" />
        </property>
        <property name="picture" type="java.lang.String">
            <column name="PICTURE" length="50" />
        </property>
        <property name="price" type="java.lang.Double">
            <column name="PRICE" precision="10" not-null="true" />
        </property>
        <property name="discount" type="java.lang.Long">
            <column name="DISCOUNT" precision="10" scale="0" not-null="true" />
        </property>
        <property name="storenum" type="java.lang.Long">
            <column name="STORENUM" precision="10" scale="0" not-null="true" />
        </property>
        <property name="updatetime" type="java.util.Date">
            <column name="UPDATETIME" length="7" not-null="true" />
        </property>
        <property name="status" type="java.lang.Long">
            <column name="STATUS" precision="10" scale="0" />
        </property>
        <set name="favoriteitems" inverse="true">
            <key>
                <column name="PRODUCTID" precision="20" scale="0" not-null="false" />
            </key>
            <one-to-many class="com.frogstore.pojo.Favoriteitem" />
        </set>
        <set name="orderitems" inverse="true">
            <key>
                <column name="PRODUCTID" precision="20" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.frogstore.pojo.Orderitem" />
        </set>
        <set name="commentses" inverse="true">
            <key>
                <column name="PRODUCTID" precision="20" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.frogstore.pojo.Comments" />
        </set>
    </class>
</hibernate-mapping>
Category的配置文件
<hibernate-mapping>
    <class name="com.frogstore.pojo.Category" table="CATEGORY" schema="ADMIN">
        <id name="categoryid" type="java.lang.Long">
            <column name="CATEGORYID" precision="20" scale="0" />
            <generator class="sequence"></generator>
        </id>
        <property name="categoryname" type="java.lang.String">
            <column name="CATEGORYNAME" length="30" not-null="true" />
        </property>
        <property name="descriptions" type="java.lang.String">
            <column name="DESCRIPTIONS" length="400" />
        </property>
        <property name="picture" type="java.lang.String">
            <column name="PICTURE" length="50" />
        </property>
        <property name="parentid" type="java.lang.Long">
            <column name="PARENTID" precision="20" scale="0" not-null="true" />
        </property>
        <set name="products" inverse="true">
            <key>
                <column name="CATEGORYID" precision="20" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.frogstore.pojo.Product" />
        </set>
    </class>
</hibernate-mapping>

解决方案 »

  1.   

    not-null property references a null or transient value: com.frogstore.pojo.Product.category 数据库中不允许为空的字段····插入了为空的或者变量····
      

  2.   

    <many-to-one name="category" class="com.frogstore.pojo.Category" fetch="select"> 
                <column name="CATEGORYID" precision="20" scale="0" not-null="true" /> 
            </many-to-one> 这里不允许为NULL
    你保存的时候他的数据为NULL
      

  3.   

        <many-to-one name="product" column="PRODUCTID" 
            class="com.frogstore.pojo.Product" 
            lazy="false" unique="true" cascade="all" not-null="true" > 
    把里边的cascade删除掉就解决了