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 的关联是一对多的。这就是我试图在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>

我的第二个问题:现在假设我在表STOCKDAILYRECORD(在数据库中)中添加了一个名为indexCol的列。所以在 Conception 中我们会有:每个 Stock 都有一个 StockDailyRecord 列表,从 0 到 x 排序。这意味着indexCol 相对于它的 Stock 是唯一的,但在 StoCKDAILYRECORD 中不是唯一的。我的想法正确吗?

我的第三个问题是关于我在 stackoverflow 上找到的解决方案:Hibernate one to many mapping works with a list but not a set? ,在最高投票的答案中,它说如果我们想避免list ,我们可以将对象声明为 Collection 并将其实例化为 ArrayList并在 xml 映射文件中使用bag。那么是否可以将其声明为 ArrayList 而不是 Collection?非常感谢你:)

4

1 回答 1

2

使用 List 有什么问题?您可以将其作为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 接口,顺便说一下,这两个对象具有相同的方法。

于 2012-07-24T03:14:20.703 回答