2012-02-28 4 views
2

私は単純なJPAプロジェクトを実行しています(WebSphere 7ではIBM RAD 7.5)。単純なJPA @OneToManyは、存在しないテーブルのSQLを生成しています

私には多くの注文があります。私は顧客を取得しようとすると、JPAによって生成されるのSQLが含まれているので、私はエラーを取得する...このよう

@Entity 
public class Customer /* in table CC_CUSTOMER */ 
    @Id 
    BigDecimal customerId; 
    @OneToMany(fetch=FetchType.EAGER) 
    private List<Order> orderList; 

...

@Entity 
public class Order /* in table CC_ORDER */ 
    @Id 
    BigDecimal orderId; 
    Customer customer; 

私が持っている問題をされたルックス存在しないテーブルを選択:CC_CUSTOMER_CC_ORDER

何が間違っていますか?

ありがとうございます!

ロブ

答えて

2

お客様の顧客に@ManyToOneアノテーションがありません。そしてそのためJPAのmappedBy = @OneToMany注釈で "顧客"

Customerエンティティ

@OneToMany(fetch=FetchType.EAGER, mappedBy="customer") 
private List<Order> orderList; 

Orderエンティティ

@ManyToOne 
Customer customer; 

はあなたの関係が単方向であることを考えて、これはという名前のテーブルを結合することによって解決されますCC_CUSTOMER_CC_ORDER。プロバイダにスキーマを生成させる場合は、テーブルを生成する必要があります。

+0

ありがとうございます - 新しい問題です、生成クエリは、存在しないORDER.CUSTOMER_CUSTOMERIDというORDERテーブルのフィールドを探しています - アイデアですか? (ORDER.CUSTOMERIDは存在します) –

+0

FYI、@ManyToOneの後に@JoinColumn(name = "customerid")を追加しました。しかし、私のテストは、顧客を取り出すときに注文にロードされていません。 (フェッチタイプは顧客に熱心です。)どのようなアイデアですか? (または、新しい質問をする必要がありますか?) –

+0

どのようにデータをDBに挿入しますか?テーブルに正しい値が含まれていることを確認できますか(特に注文テーブルのcustomerid列が満たされている場合)? JPAを使用して挿入する場合は、注文リストに注文を追加するだけでなく、注文エンティティで顧客プロパティを設定することを忘れないでください。 –

関連する問題