1

我需要连接 3 个表。

我的第一个项目是我自己制作数据库,同时学习一个新的框架,这可能有点令人困惑,因为当涉及到数据库时,我并不是那么好。

我正在使用 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 中执行此操作的正确方法)。

任何建议或帮助将不胜感激。

4

1 回答 1

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;
于 2012-10-26T08:57:40.793 回答