我有两个实体,客户和订单。一个客户有多个订单。我尝试双向一对多和多到one.So,我可以选择哪个收集对象,即包,映射etc.So,使用一对多和多对一双向关系,我可以根据什么选择收集对象?
发布于 2011-08-12 02:40:59
如果每个订单都是唯一的,并且客户不能在同一集合中拥有两次相同的订单,则使用Set,否则使用List
首先,请记住必须覆盖每个类的equals()和hashCode()函数:
使用List时,您可以用不同的方式映射它:
未在数据库列表中实现顺序的数据库有序列表,在数据库中实现顺序的
有序列表的实现方式如下:
@OneToMany(mappedBy="customer")
@OrderBy("number")
public List<Order> getOrders() { return orders; }索引列表以以下方式映射:
@OneToMany(mappedBy="customer")
@OrderColumn(name="orders_index")
public List<Order> getOrders() { return orders; }要将索引值存储在专用列中,请在属性上使用@javax.persistence.OrderColumn批注。这个注释描述了列名和保持索引值的列的属性。此列驻留在包含关联外键的表中。如果未指定列名,则默认为引用属性的名称,后跟下划线,然后是顺序(在下面的示例中,它将是orders_ORDER)。
如果你想使用Set<Order>,这很简单:
@OneToMany(mappedBy="customer")
public Set<Order> getOrders() { return orders; }希望能有所帮助。
https://stackoverflow.com/questions/7030360
复制相似问题