2012-02-28 3 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

내가 뭘 잘못하고 있니?

감사합니다.

Rob

답변

2

고객 고객에게 누락 된 @ManyToOne 주석이 있습니다.

고객 엔티티

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

주문 엔티티

@ManyToOne 
Customer customer; 

그 때문에 JPA의 @OneToMany 주석에서와 mappedBy는 = "고객"의 관계는 단방향이며,이 표라는 조인에 의해 해결된다 생각 CC_CUSTOMER_CC_ORDER. 제공자가 스키마를 생성하게 만들려면 테이블이 생성되어야합니다.

+0

감사합니다. 새로운 문제입니다. 생성 쿼리는 존재하지 않는 ORDER.CUSTOMER_CUSTOMERID라는 ORDER 테이블의 필드를 찾고 있습니다. 아이디어가 있습니까? (ORDER.CUSTOMERID는 존재합니다.) –

+0

참고로, @ManyToOne 다음에 @JoinColumn (name = "customerid")을 추가했으며 멀리있을 때 새로운 오류가 발생했습니다. 그러나 고객을 검색 할 때 내 테스트가 주문에로드되지 않습니다. (가져 오기 유형은 고객에게 열망합니다.) 어떤 아이디어입니까? (또는 새로운 질문을 넣어야합니까?) –

+0

어떻게 데이터를 DB에 삽입합니까? 테이블에 올바른 값이 들어 있는지 확인할 수 있습니까? 특히 주문 테이블의 고객 ID 열이 가득 찼습니까? JPA를 사용하여 삽입하는 경우 주문 목록에 주문을 추가하고 주문 엔터티에 고객 속성을 설정하는 것을 잊지 마십시오. –

관련 문제