【发布时间】:2021-09-30 03:12:12
【问题描述】:
我要创建下表:
ITEM_TABLE:
ID | TITLE | STORE1_TITLE | STORE1_PRICE | STORE2_TITLE | STORE2_PRICE
我们可以看到这是一个包含 X 个商店的列表,应该像这样提取到一个单独的表中:
ITEM_TABLE:
ID | TITLE
STORE_ITEM_TABLE:
ITEM_ID | STORE_TITLE | PRICE
问题:我使用哪种方法通过 Hibernate 实现这一目标?
我测试过的:
@Entity
@Table(name = "ITEM_TABLE")
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(name = "TITLE")
private String title;
@OneToMany(mappedBy = "STORE")
private List<Store> stores;
}
下一步:
@Entity
@Table(name = "ITEM_STORE_TABLE")
public class Store {
@ManyToOne
@JoinColumn(name="ITEM_ID", nullable=false)
private Item item;
@Column(name = "STORE_TITLE")
private String title;
@Column(name = "PRICE")
private double price;
}
这种方法的问题是 Hibernate 似乎不允许在没有 ID 的情况下创建 ITEM_STORE_TABLE。我看不出它有任何理由和 ID,因为它只是一个属于 ITEM_TABLE 中行的列表,在这个意义上不是一个实际的商店。
我在正确的道路上吗?或者我应该使用@IdClass 并在 STORE_ITEM_TABLE 中使用多个键(感觉不对)?还是应该使用@Embeddable 来处理列表?
欢迎任何反馈!
【问题讨论】:
标签: hibernate one-to-many hibernate-mapping many-to-one