Hibenate ManyToOne配置

 

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 (?, ?) 

 

猜你喜欢

转载自onepiece021.iteye.com/blog/2244342