1 対多の関係をデータベースに保存したいと考えています。この場合、1 人の親と 2 人の子供です。
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`));
問題は、親に対して 1 つの子が保存され、それが保存されると、userId を除いてすべてのフィールドが null として表示されることです。親に対して複数のオブジェクトを保持し、値をデータベースに表示したいと考えています。私はそれをどのように実装するのですか?