我想将一个对象保存到我的子类ArticleZoning中,该子类的超类Zoning包含一个类zoneData的列表,该列表还包含一个类ZoneCoordinate。当我保存我的子类ArticleZoning的对象时,它给出了一个例外。

org.hibernate.PropertyValueException: not-null property references a null or transient value: com.qait.cdl.eon.commons.domain.ZoneData._com.qait.cdl.eon.commons.domain.Zonning.zoneDatasBackref
at org.hibernate.engine.Nullability.checkNullability(Nullability.java:101)
at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:313)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210).....


这是* Zonning hbm *映射文件:-

    <class name="Zonning" table="zoning">
<id name="id" column="id" type="long">
        <generator class="native" />
    </id>

<list name="zoneDatas" lazy="false" cascade="all-delete-orphan" >
        <key column="zoning_id" not-null="true"/>
        <list-index column="idx" base="1" />
        <one-to-many class="com.qait.cdl.eon.commons.domain.ZoneData" />
</list>

<many-to-one class="com.qait.cdl.eon.commons.domain.MagazineIssue" unique="true" column="issue_id" name="issue"/>

<property name="pageNumber" column="article_on_pageNumber" type="string" not-null="true" />


    <joined-subclass name="ArticleZoning" extends="Zonning" table="article_zoning">

        <key column="article_id"/>
        <property name="articleTitle" column="article_title" type="string" not-null="true" />
        <property name="articleOrder" column="article_order" type="int" not-null="true" />
        <property name="articleFileId" column="article_file_id" type="string" not-null="true" />


        <property name="articleType" column="article_type">
            <type name="org.hibernate.type.EnumType">
                <param name="type">12</param>
                <param name="enumClass">com.qait.cdl.eon.common.constants.ArticleType</param>
            </type>
        </property>

        <property name="articleSubTitle" column="article_sub_title" type="string" not-null="true" />
        <property name="articleGenre" column="article_genre">
            <type name="org.hibernate.type.EnumType">
                <param name="type">12</param>
                <param name="enumClass">com.qait.cdl.eon.common.constants.Genre</param>
            </type>
        </property>

    </joined-subclass>

    <joined-subclass name="AdvertisementZoning" extends="Zonning" table="advertisement_zoning">

        <key column="advertisement_id" />
        <property name="adVendor" column="ad_vendor" type="string" not-null="true" />
        <property name="vendorUrl" column="vendor_url" type="string" not-null="true" />
        <property name="adProduct" column="ad_product" type="string" not-null="true" />
        <list name="adKeywords" table="ad_keywords" lazy="false" cascade="all">
            <key column="ad_keywords_id" />
            <list-index base="0" column="idx"/>
            <element column="keywords" type="string" />
        </list>
    </joined-subclass>

</class>


这是ZoneData Hbm



    <id name="id" column="id" type="long">
        <generator class="native" />
    </id>
    <property name = "zoneOrder"  column = "zone_order"   type = "int"    not-null="true"/>
    <property name = "zoneFileId" column = "zone_file_id" type = "string" not-null="true"/>
    <property name = "zoneShape"  column = "zone_shape"   type = "string" not-null="true" access="field"></property>

     <many-to-one  name="coordinates"  column="coordinates_id" lazy="false" class="com.qait.cdl.eon.commons.domain.ZoneCoordinates"
     unique="true"  not-null="true" cascade="all-delete-orphan"/>

</class>


这是ZoneCoordinate hbm

<class name="ZoneCoordinates" table="zone_coordinates">

        <id name="id" column="id" type="long">
            <generator class="native" />
        </id>
        <property name = "leftTopX"     column = "left_top_x"     type = "float" not-null="true" />
        <property name = "leftTopY"     column = "left_top_y"     type = "float" not-null="true" />
        <property name = "rightBottomX" column = "right_bottom_x" type = "float" not-null="true" />
        <property name = "rightBottomY" column = "right_bottom_y" type = "float" not-null="true" />
    </class>


这是分区pojo

  class Zoning{
    private List<ZoneData> zoneDatas =new ArrayList<>();
    private MagazineIssue issue;
    private String pageNumber;
    //getter and setter
    }


这是ZoneData POJO

class ZoneData{
    private int zoneOrder;
    private String zoneFileId ;
    private ZoneCoordinates coordinates;
    private final String zoneShape = "RECT";
    //getter and setter
}


这是ArticleZoning POJO

class ArticleZoning extends Zoning{
private String articleTitle;
private String articleOrder;
private ArticleType articleType;
private String articleFileId;
private String articleSubTitle;
private Genre articleGenre;
//getter and setter
}


这是ZoneCoordinate POJO

class ZoneCoordinate{

    private float leftTopX;
    private float leftTopY;
    private float rightBottomX;
    private float rightBottomY;
    //getter and setter
}

最佳答案

首先,ArticleZoning POJO具有articleOrder作为String类型。您的Zonning.hbmarticleOrder是int类型的。
其次,由于分区表无法保存,因此其外键为空。

10-01 23:56
查看更多