0

我想为实体“订单”和“项目”之间的示例 m:n 关系建模

对应的映射部分是:

订单.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;
...

项目.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;
...

你知道为什么我不能反向获取特定项目引用的订单吗?@ManyToMany (mappedBy="items")部分给了我一个“这种关系的无效映射类型”。我想我可以创建任意项目和订单,将项目添加到订单中,然后获取与项目相关的所有订单。

就我而言,item.getOrders() 给了我一个 NullPointerException。

非常感谢!

4

1 回答 1

2

仅仅是因为您忘记在项目上添加 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;
于 2013-05-02T07:48:09.933 回答