Hibenate ManyToOne配置

本文介绍了Hibernate中ManyToOne的配置方法,特别是在多的一端如何维护关系,而且不生成中间表。重点讲解了一端使用@OneToMany但不设置cascade属性,以及多端的配置策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值