我將Spring與Hibernate用作JPA提供程序,並試圖讓@OneToMany(具有多個電話號碼的聯繫人)將外鍵保存在電話號碼錶中。從我的表單中,我得到一個Contact對象,其中包含一個Phone(數字)列表。聯繫人得到持久保存(Hibernate從指定的序列中獲取PK)。 Phone(電話號碼)列表也會持有正確的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;
}
}
希望我得到了上面的所有相關位,否則請讓我知道。
由於類似,設置Java關係解決它。 – 2009-05-02 13:15:49