1

我想将一对多的关系保存到数据库中。在这种情况下,一个父母和两个孩子。

DAO 代码

   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);

}

jsp

后期处理控制器

    @RequestMapping(value="/student", method = RequestMethod.POST)
    public ModelAndView hello(@ModelAttribute("checker") UserEntity checker) { 

        userService.createMatch();

        return new ModelAndView ("redirect:/admin");}

它保存到的数据库:

    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之外,所有字段都显示为空。我想为父对象保留多个对象,并将值显示在数据库中。我想问我如何去实施它?

4

1 回答 1

0

您的hello()方法将检查器作为参数,但完全忽略它。它createMatch()在没有任何参数的情况下调用 ,它保存了一个包含空设置器的空检查器。所以结果在意料之中。

对于要填写的其他字段,您必须填写它们。

于 2013-05-20T14:32:57.630 回答