0

次のクラスのhibenateマッピングで立ち往生しています

public class Order {
    private String orderNumber;
    private List<Component> Components = new ArrayList<Component>();
}

public class Component{
   private String orderNumber;
   private String partNumber;
   private Integer rowNum;
   private Part product;
}

public class Part{
    private String partNumber;
    private String barcodeNumber
    private Barcode barcode;
}
public class Barcode {
    private String barcodeNumber;
    private String itemBarcode;
    private String boxBarcode;
}

Hibernateマッピング

注文

<class name="Order" table="Order" node="order" lazy="true">
    <id name="partNumber" unsaved-value="undefined" node="@partNumber">
        <column name="partNumber" not-null="true" />
    </id>
    <bag name="Components" lazy="true" outer-join="false" fetch="select">
        <key column="_PARENT" />
        <one-to-many class="Component" />
    </bag>
</class>

成分

<class name="Component" table="component" node="order" lazy="true">
    <composite-id unsaved-value="undefined">
        <key-property name="enumber">
            <column name="_PARENT" not-null="true" />
   </key-property>
   <key-property name="rowNum" >
       <column name="_ROWNUM" not-null="true" />
   </key-property>
         <key-property name="rpn" >
             <column name="RPN" not-null="true" />
         </key-property>
    </composite-id>
    <property name="partNumber" node="@partNumber">
        <column name="partNumber" />
    </property>
    <many-to-one lazy="proxy" fetch="join" update="false" insert="false" name="part" class="Part" column="partNumber" node="part" embed-xml="true"></many-to-one>
</class>

<class name="Part" table="Part" node="part" lazy="true">
    <meta attribute="implement-equals">true</meta>
    <cache usage="read-only"/>
    <id name="cpn" type="string" unsaved-value="undefined" node="@cpn">
        <column name="CPN" not-null="true" />
    </id>     
    <property name="barcodeNumber" type="string" node="@barcodeNumber">
        <column name="barcodeNumber" not-null="false" />
    </property>
    <many-to-one  name="Barcode" foreign-key="barcodeNumber" class="Barcode" fetch="select"/>
</class>

バーコード

<class name="Barcode" table="Barcode" node="barcode" lazy="true">
    <id name="barcodeNumber" unsaved-value="undefined" node="@barcodeNumber">
      <column name="barcodeNumber" not-null="true" />
    </id>
    <property name="itemBarcode" type="string" node="@itemBarcode">
        <column name="itemBarcode" />
    </property>
    <property name="boxBarcode" type="string" node="@boxBarcode">
        <column name="boxBarcode"  />
    </property> 
</class>

私が抱えている問題は、PartクラスとBarcodeクラスにあります。Partには、バーコードをPartにリンクする特別なbarcodeNumberがあります。データ構造を変更できませんが、注文のリストを表示できるように、これらのテーブルを結合したいと思います。そこにコンポーネントと部品とバーコードがあります

マッピングは初期負荷を渡しますが、リストを取得するとシステムが失敗しますorg.hibernate.PropertyAccessException:Barcode.barcodeNumberのgetterを呼び出してIllegalArgumentExceptionが発生しました

4

2 に答える 2

0

ゲッターとセッターを追加する必要があります。コードを変更してください

から

    private Barcode barcode;

    private Barcode barcode = new Barcode();
于 2013-03-22T06:12:28.290 に答える
0

のgetterメソッドの問題ですbarcodeNumber

それはあるべきだ

 getBarcodeNumber();
于 2013-03-22T04:21:48.317 に答える