2011-11-23 2 views
3

@OneToMany 및 @ManyToOne 관계로 엔티티를 유지하려고합니다.JPA는 OneToMany ManyToOne과 지속됩니다.

@OneToMany(mappedBy="customer", cascade=CascadeType.ALL, fetch=FetchType.EAGER) 
private Collection<Address> addresses = new LinkedHashSet<Address>(); 

@ManyToOne 
@JoinColumn(name="customer_id", referencedColumnName="customer_id") 
private Customer customer; 

문제는 NULL 대신 address 테이블에 CUSTOMER_ID의 삽입이다.

그 이유는 무엇일까요?

미리 감사드립니다.

+1

생성자와 메소드가없는 전체 매핑과 유지하는 데 사용하는 코드를 함께 표시하십시오. -> 질문을 편집 – Kawu

+0

약간의 코드가 실제로 트랜잭션을 수행 도움이 될 것입니다! –

+0

실제 퍼시스턴스 작업을위한 코드를 표시하지 않는다면 여기서는 장님입니다. –

답변

4

아마도 주소의 customer 필드를 초기화하지 않았 음을 의미합니다. 그것이 해결책이 아니라면 코드를 보여주십시오.

+0

public void createCustomer (고객 고객) { \t \t em.persist (고객); \t \t em.flush(); \t} 이 내가 주소를 수집 의 ApplicationContext ApplicationContext를 = 새로운 ClassPathXmlApplicationContext ("META-INF/봄/앱의 context.xml")에 주소 를 추가 여기에 고객을 작성하고 실제 코드이다; \t \t 고객 c = 새 고객(); \t \t c.setName ("Bruce Eckel"); \t \t 주소 a = 새 주소(); \t \t c.getAddresses(). add (a); \t \t a.setAddress ("submarine str. # 45"); \t \t // 서비스 빈 검색 \t \t CustomerService service = applicationContext.getBean ("customerService", CustomerService.class); \t \t service.createCustomer (c); – George

+2

그래서 내 대답은 정확합니다. 당신이 놓친 a.setCustomer (c); –

+0

오 년 감사합니다. 나는 무언가가 간단하다는 것을 알고 무엇을 실현할 수 있었는가? 많이 감사합니다! – George