Biz*_*zzy 4 java hibernate jpa java-ee
嗨,我对JPA有问题...
D B:

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;
}
Run Code Online (Sandbox Code Playgroud)
用户信息:
@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;
}
Run Code Online (Sandbox Code Playgroud)
目前,当我尝试执行此操作时(再次省略了设置无关字段的设置):
User u = new User();
UserInfo info = new UserInfo();
u.addUserInfo(info);
em.persist(u); // save user
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
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)
Run Code Online (Sandbox Code Playgroud)
我整天都在努力工作,我不知道该怎么办...我也在这里搜索解决方案,但它们都表明此错误表明我想输入UserInfo而不输入user_iduser值,但是即使添加这之前坚持:
info.setUser(u);
Run Code Online (Sandbox Code Playgroud)
它仍然不起作用-级联是否支持双向映射?理想的效果是,应先插入User,然后再引用原始User,然后再插入列表中的所有UserInfo。我该如何实现?
我不想做
SET foreign_key_checks = 0/1;
Run Code Online (Sandbox Code Playgroud)
每次=(
尝试:
@ManyToOne
@JoinColumn(name="user_iduser", nullable=false)
private User user;
Run Code Online (Sandbox Code Playgroud)
然后看看这是否有效。我假设在user_info表中,该user_id字段NOT NULL在您的RDBMS中。另外,由于它是双向的,因此您必须setXXX启用UserInfo和User。
User u = new User();
UserInfo info = new UserInfo();
info.setUser(u);
u.addUserInfo(info);
em.persist(u); // save user
Run Code Online (Sandbox Code Playgroud)
更新:确定要同时为User和指定ID UserInfo?似乎未设置ID,因此没有引用链接UserInfo到User。
如果ID为AUTO_INCREMENT,则在@Id注释后添加以下内容:
@GeneratedValue(strategy=GenerationType.IDENTITY)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11896 次 |
| 最近记录: |