jpa 多层嵌套一对多_spring data jpa关联查询(一对一、一对多、多对多)

在实际过往的项目中,常用的查询操作有:1、单表查询,2、一对一查询(主表和详情表)3、一对多查询(一张主表,多张子表)4、多对多查询(如权限控制,用户、角色多对多)。做个总结,所以废话不多说。

使用idea构建springboot项目,引入依赖如下:

dependencies>

org.springframework.boot

spring-boot-starter-data-jpa

com.h2database

h2

runtime

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

使用h2数据库做测试用,application.yml配置如下:

spring:

jpa:

generate-ddl: truehibernate:

ddl-auto: update

properties:

hibenate:

format_sql:falseshow-sql: true

首先,一对一有好几种,这里举例的是常用的一对一双向外键关联(改造成单向很简单,在对应的实体类去掉要关联其它实体的属性即可),并且配置了级联删除和添加,相关类如下:

packageio.powerx;import lombok.*;import javax.persistence.*;/*** Created by Administrator on 2018/8/15.*/@Getter

@Setter

@Entitypublic classBook {

@Id

@GeneratedValueprivateInteger id;privateString name;

@OneToOne(cascade={CascadeType.PERSIST,CascadeType.REMOVE})

@JoinColumn(name="detailId",referencedColumnName = "id")privateBookDetail bookDetail;publicBook(){super();

}publicBook(String name){super();this.name =name;

}publicBook(String name, BookDetail bookDetail) {super();this.name =name;this.bookDetail =bookDetail;

}

@OverridepublicString toString() {if (null ==bookDetail) {return String.format("Book [id=%s, name=%s, number of pages=%s]", id, name, "");

}return String.format("Book [id=%s, name=%s, number of pages=%s]", id, name, bookDetail.getNumberOfPages());

}

}

packageio.powerx;importlombok.Getter;importlombok.Setter;import javax.persistence.*;

@Getter

@Setter

@Entity(name= "BOOK_DETAIL")public classBookDetail {

@Id

@GeneratedValueprivateInteger id;

@Column(name= "NUMBER_OF_PAGES")privateInteger numberOfPages;

@OneToOne(mappedBy= "bookDetail")privateBook b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值