gpt4 book ai didi

mysql - 使用 Hibernate 和注释连接两个表和一个中间表

转载 作者:行者123 更新时间:2023-11-29 00:39:01 25 4
gpt4 key购买 nike

我需要连接 3 个表。

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

我正在使用 Spring 3.1.0.RELEASE 和 Hibernate 3.6.8.Final

我将在此处命名最重要的属性,以大致说明我要在此实现的目标。

Inventory (id, ItemName...)

Line_Items (WORKSHOP_ORDERS_Id, INVENTORY_Id, Quantity)

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

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

最佳答案

根据您在下面给出的表的描述是关系。

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;

关于mysql - 使用 Hibernate 和注释连接两个表和一个中间表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13083279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com