我的第一个项目是我自己创建数据库,同时学习一个新的框架,这可能有点令人困惑,因为当它归结为DB时我不是那么好。
我正在使用Spring 3.1.0.RELEASE和Hibernate 3.6.8.Final
我将在这里列出最重要的属性,以便大致了解我想在这里实现的目标。
广告资源(id,ItemName ...)
Line_Items (WORKSHOP_ORDERS_Id,INVENTORY_Id,数量)
Workshop_Order (Id,WorkshopService,WorkshopNotes ...)
这样我希望每个订单都有多个项目,计划为每个订单中的每个不同产品保留一个Line_Items,并通过FK将其链接到正确的订单。
我用我的注释尝试了不同的东西,我的persistence.xml工作,这是我的代码中唯一存在任何问题的地方。关于如何使用注释映射这种关系,我100%无能为力,所以我将在这里发布我的代码,即使它没有任何有用的地方(但我可能会得到一些指示)。
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "LINE_ITEMS")
public class LineItems implements Serializable {
private static final long serialVersionUID = 2414994088922470197L;
public Long workshopOrderId;
public Long inventoryId;
public int quantity;
public Workshop workshop;
public Inventory inventory;
@OneToMany(mappedBy = "workshop",cascade = CascadeType.ALL)
@JoinColumn(name="WORKSHOP_ORDERS_Id", insertable = false, updatable = false, nullable = false)
public Workshop getWorkshop() {
return workshop;
}
@OneToMany(mappedBy = "inventory", cascade = CascadeType.ALL)
@JoinColumn(name="INVENTORY_Id", insertable = false, updatable = false, nullable = false)
public Inventory getInventory() {
return inventory;
}
public void setWorkshop(Workshop workshop) {
this.workshop = workshop;
}
public void setInventory(Inventory inventory) {
this.inventory = inventory;
}
@Id
@Column(name = "WORKSHOP_ORDERS_Id")
public Long getWorkshopOrderId() {
return workshopOrderId;
}
@Id
@Column(name = "INVENTORY_Id")
public Long getInventoryId() {
return inventoryId;
}
@Column(name = "Quantity")
public int getQuantity() {
return quantity;
}
public void setWorkshopOrderId(Long workshopOrderId) {
this.workshopOrderId = workshopOrderId;
}
public void setInventoryId(Long inventoryId) {
this.inventoryId = inventoryId;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
}
我听过一些关于Hibernate中的错误的讨论,但不确定这是否与我的问题有关。
基本上我需要的不是问题的完整解决方案,而是对我正在做什么以及我应该做些什么来纠正它的一些想法。我很乐意在智能数据库设计方面提供一些帮助(关于我已经展示的表格,以及在Hibernate中执行它的正确方法)。
任何建议或帮助将不胜感激。
答案 0 :(得分:1)
根据您在下面给出的表格的描述是关系。
Assumtpions:
- Many line_item is connected to one WorkshopOrder
- Many Line_items can be connected to same inventory
Line_Items (WORKSHOP_ORDERS_Id, INVENTORY_Id, Quantity)
| |
| ManyToOne
ManyToOne |
| Inventory (id, ItemName...)
|
Workshop_Order (Id, WorkshopService, WorkshopNotes...)
目前在您实体中您使用的是OneToMany,但是一对多表示一个项目可以有多个订单,因此订单将成为集合。那似乎不对。
编辑:项目与项目之间的编辑关系按照评论,将MANYTOONE安装在ONETOONE的工作室。
LineItems.java
@ManyToOne
WorkshopOrder w;
@ManyToOne
Inventory i;
WorkshopOrder.java
@OneToMany
List<LineItems> items;
Inventory.java
@OneTOMany
List<LineItems> items;