JPA 프로 바이더로서 Spring을 사용하며 JPA 제공자로 @OneToMany (전화 번호가 많은 연락처)를 가져 와서 전화 번호 테이블에 외래 키를 저장하려고합니다. 내 양식에서 전화 번호 (전화 번호) 목록이있는 연락처 개체를 얻을. Contact는 적절하게 지속된다 (Hibernate는 지정된 시퀀스로부터 PK를 가져온다). 전화 (숫자) 목록도 정확한 PK로 유지되지만 연락처 테이블에는 FK가 없습니다.JPA는 @OneToMany 관계에 외래 키를 저장하지 않습니다.
public class Contact implements Serializable {
@OneToMany(mappedBy = "contactId", cascade = CascadeType.ALL, fetch=FetchType.EAGER)
private List<Phone> phoneList;
}
public class Phone implements Serializable {
@JoinColumn(name = "contact_id", referencedColumnName = "contact_id")
@ManyToOne
private Contact contactId;
}
@Repository("contactDao")
@Transactional(readOnly = true)
public class ContactDaoImpl implements ContactDao {
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void save(Contact c) {
em.persist(c);
em.flush();
}
}
@Controller
public class ContactController {
@RequestMapping(value = "/contact/new", method = RequestMethod.POST)
public ModelAndView newContact(Contact c) {
ModelAndView mv = new ModelAndView("contactForm");
contactDao.save(c);
mv.addObject("contact", c);
return mv;
}
}
다행히도 위의 관련 비트를 모두 얻었 으면 좋겠다.
감사 비슷한
는, 그것을 해결. –
'addPhone' 메소드가 정확합니까? null check가 잘못된 위치에있는 것처럼 보입니다. –
phone.setContact (this) - 메모리 누수가 발생 했습니까? 안 그래? –