Hibernate列表映射

时间:2014-01-07 13:01:37

标签: java hibernate jpa mapping

我正在尝试映射实体,因此我会有以下或类似的效果(最好没有OrderItem.quantity):

enter image description here

这是我的实体:

public class Orders implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private UserCreds user;
@OneToMany
private List<Item> orderedItems;

我最终只使用2列映射OrdersItem连接表:   item_id order_id ,都是密钥 因此它不会让我坚持重复项目的顺序。为OrderItems添加id列应该可以解决这个问题:

OrdersItem table that I except:
| ID | ORDER_ID | ITEM_ID
  1    25         31
  2    25         31
  3    25         12
  4    25         12
  5    25         62

等。 但是我无法让它工作,或者我的解决方案完全错了?

1 个答案:

答案 0 :(得分:0)

在这里使用元素集合可能是更好的选择。元素集合可以很好地提供与属性的关系。

您的Orders课程中可能会显示如下:

@ElementCollection
private Map<Item, Integer> itemQuantities = new HashMap<Item, Integer>();

编辑:当@ElementCollection类型为基本类型或Map时,您可以使用EmbeddableInteger是基本类型。

如果您决定使用实体作为Map类型,则必须使用@OneToMany@ManyToMany

在这种情况下,类型对注释选择没有影响,因此您可以使用ItemLong作为键,而无需更改注释。但是,这会对您可以使用的物理映射注释产生影响。