2

stackoverflow で開かれている多くのトピックを確認しましたが、質問に対する回答が得られませんでした。わかりました、 ArrayListを使用してこの例を考えてみましょう:

public class Stock implements java.io.Serializable {     
    private Integer stockId;
    private String stockCode;
    private String stockName;
    private ArrayList<StockDailyRecord> stockDailyRecords = new ArrayList<StockDailyRecord>(); 
    //getter, setter and constructor
}
public class StockDailyRecord implements java.io.Serializable { 
    private Integer recordId;
    private Stock stock;
    private Float priceOpen;
    private Float priceClose;
    private Float priceChange;
    private Long volume;
    private Date date;

    //getter, setter and constructor
}

したがって、Stock から StockDailyRecord への関連付けは、 1 対多であると言えます。そして、それは私がStock.hbm.xmlにマップしようとしているものです。listタグによるマッピング中に、 indexが必要であることを読みました。

だから私の最初の質問は:インデックスリストを空のままにすることは可能ですか??

<list name="stockDailyRecords" table="stock_daily_record" inverse="true" lazy="true" fetch="select">
    <key>
        <column name="STOCK_ID" not-null="true" />
    </key>
    <list-index></list-index>
    <one-to-many class="com.mkyong.stock.StockDailyRecord" />
</list>

私の 2 番目の質問: テーブルSTOCKDAILYRECORD (データベース内) にindexColという列を追加するとします。つまり、Conception では次のようになります。すべての Stock には、0 から x までの順序で並べられた StockDailyRecord のリストがあります。これは、indexCol がその Stock に対して一意であるが、 STOCKDAILYRECORD では一意ではないことを意味します。私の考えは正しいですか?

私の3番目の質問は、ここでstackoverflowで見つけた解決策に関するものです.Hibernateの1対多のマッピングはリストでは機能しますが、セットでは機能しませんか? 、最も投票数の多い回答では、オブジェクトを Collection として宣言し、それを ArrayList としてインスタンス化し、listを避けたい場合は xml マッピング ファイルでbagを使用できると述べています。Collection の代わりに ArrayListを宣言することは可能ですか? 事前にどうもありがとう:)

4

1 に答える 1

2

リストを使用する際の問題は何ですか?あなたはそれをarraylistとして管理することができます。例えば:

<bag name="stockDailyRecords" table="stock_daily_record" inverse="true" lazy="true" fetch="select">
<key column="STOCK_ID"/>
<many-to-many column="recordId" fetch="select" lazy="false" class="com.mkyong.stock.StockDailyRecord"/>
</bag>

ちなみに、ArrayListはListインターフェイスを実装していることを忘れないでください。ちなみに、これら2つのオブジェクトは同じメソッドを持っています。

于 2012-07-24T03:14:20.703 に答える