1

接続する必要がある 3 つのテーブルを取得しました。

新しいフレームワークを学びながら、自分でデータベースを作成している最初のプロジェクトを手に入れました。これは、DB に関してはそれほどうまくいかないため、ちょっと混乱する可能性があります。

Spring 3.1.0.RELEASE と Hibernate 3.6.8.Final を使用しています

ここで達成しようとしていることの一般的な考え方を示すために、ここで最も重要な属性に名前を付けます。

インベントリ(id、アイテム名...)

Line_Items (WORKSHOP_ORDERS_Id、INVENTORY_Id、数量)

Workshop_Order (ID、WorkshopService、WorkshopNotes...)

このようにして、注文ごとに複数のアイテムを持つことができれば、すべての注文で異なる製品ごとに 1 つの 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 を使用していましたが、1 対多は 1 つのアイテムに多くの注文を含めることができるため、注文がコレクションになることを意味します。それは正しくないようです。

編集: コメントに従って、アイテムとワークショップの関係を ONETOONE ではなく MANYTOONE に編集しました。

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 に答える