Spring Hibernate-保存一对多关联
我想将一对多关系保存到数据库中。在这种情况下,一个父母和两个孩子 DAO代码Spring Hibernate-保存一对多关联,spring,hibernate,Spring,Hibernate,我想将一对多关系保存到数据库中。在这种情况下,一个父母和两个孩子 DAO代码 public void createMatch() { UserEntity checker = new UserEntity(); UserEntity setter = new UserEntity(); setter.setChecker(checker); checker.addSetter(setter); if (
public void createMatch() {
UserEntity checker = new UserEntity();
UserEntity setter = new UserEntity();
setter.setChecker(checker);
checker.addSetter(setter);
if (checker != null)
sessionFactory.getCurrentSession().persist(checker);
}
模型代码
public class UserEntity implements Serializable {
@ManyToOne(cascade={CascadeType.ALL})
@JoinColumn(name="checker_id")
private UserEntity checker;
@OneToMany(mappedBy="checker", orphanRemoval=true, cascade = CascadeType.ALL)
private Set<UserEntity> setters = new HashSet<UserEntity>();
// getters and setters
public void addSetter(UserEntity setter) {
if(setters == null) {
setters = new HashSet<UserEntity>();
}
setter.setChecker(this);
this.setters.add(setter);
}
要保存到的数据库:
CREATE TABLE `user` (
`user_id` INT(11) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NULL DEFAULT NULL ,
`checker_id` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`user_id`),
FOREIGN KEY (`checker_id`) REFERENCES `user` (`user_id`));
问题是为父项保存了一个子项,保存时,除userId外,所有字段都显示为null。我希望为父对象保留多个对象,并在数据库中显示这些值。我想问一下如何实现它?您的hello()
方法将checker作为参数,但完全忽略它。它调用createMatch()
,不带任何参数,这将保存一个包含空setter的空检查器。因此,结果是意料之中的
对于其他需要填写的字段,您必须填写。谢谢您的回复。我修改了代码以接受一个论点。它不仅保存父项,还保存同一行中具有相同id的子项。这是一个错误。
CREATE TABLE `user` (
`user_id` INT(11) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(45) NULL DEFAULT NULL ,
`checker_id` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`user_id`),
FOREIGN KEY (`checker_id`) REFERENCES `user` (`user_id`));