hibernate 多对一关联, 在多的一端维护关系, 不生成中间表
一的端配置@OneToMany,但是不设置cascade属性
@Entity
@Table(name="dorms")
public class Dorm {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 宿舍名称
@NotBlank
private String name;
// 住宿人数
@NotNull
private Integer stayCount;
// 床位
@OneToMany(fetch=FetchType.LAZY)
//@JsonIgnore
private List<Bed> beds;
}
多的端配置
@Entity
@Table(name="beds")
public class Bed {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
// 床位
private String number;
// 宿舍
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="dorm_id")
private Dorm dorm;
}
维护的时候, 仅仅保存bed信息, dorm自动被保存:
Bed b0 = new Bed();
b0.setNumber("b-1");
b0.setDorm(dorm);
Bed b1 = new Bed();
b1.setNumber("b-2");
b1.setDorm(dorm);
List<Bed> list = Lists.newArrayList(b0, b1);
bedDao.save(list);
后台log
Hibernate: insert into dorms (name, stay_count) values (?, ?)
Hibernate: insert into beds (dorm_id, number) values (?, ?)
Hibernate: insert into beds (dorm_id, number) values (?, ?)