一对多hibernate映射中的问题

一对多hibernate映射中的问题,hibernate,arraylist,indexing,one-to-many,bag,Hibernate,Arraylist,Indexing,One To Many,Bag,我检查了stackoverflow上打开的许多主题,但我并没有真正得到问题的答案。好的,让我们考虑这个例子,使用 ARARYLIST/: public class Stock implements java.io.Serializable { private Integer stockId; private String stockCode; private String stockName; private ArrayList<StockDail

我检查了stackoverflow上打开的许多主题,但我并没有真正得到问题的答案。好的,让我们考虑这个例子,使用<强> ARARYLIST/<强>:

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
}
public类Stock实现java.io.Serializable{
私有整数stockId;
私有字符串股票代码;
私有字符串stockName;
私有ArrayList stockDailyRecords=新ArrayList();
//getter、setter和构造函数
}
公共类StockDailyRecord实现java.io.Serializable{
私有整数记录ID;
私人股;
私人浮动价格开放;
私人浮动价格;
私人浮动价格变动;
私人长卷;
私人日期;
//getter、setter和构造函数
}
因此,我们可以说从股票到股票的关联每天记录它一对多。这就是我试图在Stock.hbm.xml中映射的内容。我读到当通过列表标记进行映射时,我们需要一个索引

因此,我的第一个问题是:是否可以将索引列表保持为空

<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>

我的第二个问题:假设现在我在表StockDailRecord(数据库中)中添加了一个名为indexCol的列。因此,在概念上,我们会有:每个股票都有一个股票每日记录列表,从0到x排序。。这意味着相对于其股票,indexCol是唯一的,但是在StockDailRecord中不是唯一的。我的想法正确吗


我的第三个问题是关于我在stackoverflow上找到的一个解决方案:,在投票率最高的答案中,它说我们可以将对象声明为集合,并将其实例化为ArrayList,如果我们想避免list,可以在xml映射文件中使用bag。那么,是否可以将其声明为ArrayList而不是Collection?
提前非常感谢:)

使用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接口,顺便说一下,这两个对象有相同的方法。

那么你的意思是我们可以在模型中使用“ArrayList”或“List”,并在映射“bag”中使用,没有任何问题吗?是的,但是你能解释一下为什么需要将List实例化为ArrayList吗?因为List是一个抽象类,我们不能实例化它,我们只能将一个对象声明为一个列表,有点像多态性。。但是在我的例子中不需要多态性,所以我可以声明它并将其实例化为ArrayList,您可以使用
List stockDailyRecords=new ArrayList()来实现这一点