2013-12-13 5 views
2

Я хочу сохранить объект в своем подклассе ArticleZoning, чей суперкласс Zoning содержит список классов ZoneData, которые также содержат класс ZoneCoordinate. Когда я сохраняю объект моего подкласса ArticleZoning, он дает исключение.org.hibernate.PropertyValueException: свойство null-null ссылается на значение null или переходное:

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 
} 
+0

добавить в свой конструктор Zonning новый список о зоне собственностиDatas –

+0

Где ваш код, который пытается сохранить данные? – jpkrohling

+0

все данные пришли из представления, которое не является нулевым (напечатано на консоли) после этого я сохраняю объект articlezoning, где я сталкиваюсь с проблемой – rahul

ответ

2

Во-первых, ArticleZoning POJO имеет articleOrder как тип String. Ваш Zonning.hbm говорит, что articleOrder имеет тип int. Во-вторых, поскольку таблица зонирования не может быть сохранена, следовательно, ее внешний ключ равен нулю.

+0

Да, я уже сделал это. – rahul

Смежные вопросы

 Смежные вопросы