简体   繁体   English

JPA:双向m:n关系中的数据访问

[英]JPA: data access in a bidirectional m:n relationship

I want to model a sample m:n relationship between the entities 'order' and 'items' 我想模拟实体'order'和'items'之间的样本m:n关系

The corresponding mapping sections are: 相应的映射部分是:

Order.java: Order.java:

...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ORDER_ID")
private Long orderId;

@Column(name="ORDER_DESCRIPTION")
private String description;

@JoinTable(name ="ORDER_ITEMS",
    joinColumns=@JoinColumn(name="ORDER_ID", referencedColumnName="ORDER_ID"),
    inverseJoinColumns=@JoinColumn(name="ITEM_ID", referencedColumnName="ITEM_ID"))
private Set<Item> items;
...

Item.java: Item.java:

...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ITEM_ID")
private Long itemId;

@Column(name = "ITEM_DESCRIPTION")
private String description;

@Column(name = "ITEM_PRICE")
private Long price;

@ManyToMany(mappedBy="items")
private Set<Order> orders;
...

Do you know why I am not able to inversely get the orders referenced with a specific item? 你知道为什么我无法反向获取特定项目引用的订单吗? The part @ManyToMany(mappedBy="items") gives me an "invalid mapping type for this relationship". @ManyToMany(mappedBy =“items”)部分为我提供了“此关系的无效映射类型”。 I thought I could just create arbitrary items and orders, add the items to the orders, and get subsequently all the orders regarding to an item. 我想我可以创建任意项目和订单,将项目添加到订单,然后获得有关项目的所有订单。

In my case, an item.getOrders() gives me a NullPointerException. 在我的例子中,item.getOrders()给了我一个NullPointerException。

Thanks a lot! 非常感谢!

Simply because you forgot to add the ManyToMany annotation on items: 只是因为您忘记在项目上添加ManyToMany注释:

@ManyToMany
@JoinTable(name ="ORDER_ITEMS",
    joinColumns=@JoinColumn(name="ORDER_ID", referencedColumnName="ORDER_ID"),
    inverseJoinColumns=@JoinColumn(name="ITEM_ID", referencedColumnName="ITEM_ID"))
private Set<Item> items;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM