您好我有JPA問題雙向映射...不能添加或更新子行,外鍵約束失敗 - 在休眠
DB:
Java類(無關字段中省略):
用戶:
@Entity
public class User{
@Id
private int iduser;
//bi-directional many-to-one association to UserInfo
@OneToMany(mappedBy="user", cascade= {CascadeType.ALL}, fetch=FetchType.EAGER)
private List<UserInfo> userInfos;
}
米的UserInfo:
@Entity
@Table(name="user_info")
public class UserInfo {
@Id
@Column(name="iduser_info")
private int iduserInfo;
//bi-directional many-to-one association to User
@ManyToOne
private User user;
}
目前,當我嘗試這樣做(我再次省略設置無關的領域):
User u = new User();
UserInfo info = new UserInfo();
u.addUserInfo(info);
em.persist(u); // save user
我得到這個錯誤:
Cannot add or update a child row: a foreign key constraint fails (`webstore`.`user_info`, CONSTRAINT `fk_user_info_user` FOREIGN KEY (`user_iduser`) REFERENCES `user` (`iduser`) ON DELETE NO ACTION ON UPDATE NO ACTION)
我一直在敲打我的頭一整天,我無法弄清楚...我也在這裏尋找解決方案,但他們都表明,這個錯誤表明我想進入UserInfo沒有user_iduser值輸入,但即使我添加此前堅持:
info.setUser(u);
它仍然不工作 - 是雙向映射甚至支持級聯?預期的效果是,應該先插入用戶,然後再引用原始用戶之後,列表中的所有UserInfos。我怎樣才能做到這一點?
我不想做
SET foreign_key_checks = 0/1;
每次=(
你堅持下去之前,你有沒有嘗試設置到用戶的用戶信息實例的引用。像info.setUser(u)? – JamesB
我試過在我的問題中看到錯誤部分=) – BizzyDizzy