spring boot jpa 一对多关系子表查询多次
我有2个表,一对多关系:
t_damage_lodition 主表
t_damage_cabin 子表
子表里有个外键是主表里面得主键,用得mysql数据库,但是数据库中未建立主外键关系。
代码如下
表t_damage_lodition对应的实体:
t_damage_cabin实体:
Dao:
Service:
测试结果:

从日志可以看出先查出主表,我主表里面有3条记录,然后循环所有的主表记录去查子表。这样效率好低,为啥没直接生成join语句,直接执行一次查询?还是说我整错了?
t_damage_lodition 主表
t_damage_cabin 子表
子表里有个外键是主表里面得主键,用得mysql数据库,但是数据库中未建立主外键关系。
代码如下
表t_damage_lodition对应的实体:
@Entity
@Data
@Table(name="t_damage_lodition")
public class DamageLodition extends AbstractEntity{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Integer damageid;
Integer UserId;
String loaditionName;
Date createDate;
Date modifyDate;
String locakFlag;
@OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@JoinColumn(name="damageid",referencedColumnName="damageid")
List<DamageCabin> damageCabinList;
}
t_damage_cabin实体:
@Entity
@Data
@Table(name="t_damage_cabin")
public class DamageCabinextends AbstractEntity{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
Integer id;
Integer damageid;
String cabinName;
Date strTankName;
}
Dao:
public interface DamageLoditionDao extends JpaRepository<DamageLodition ,Integer>{}
Service:
public class DamageLoditionService {
@Autowired
DamageLoditionDao damageLoditionDao;
public List<DamageLodition> SelectAll()
{
return damageLoditionDao.findAll();
}
}
测试结果:

从日志可以看出先查出主表,我主表里面有3条记录,然后循环所有的主表记录去查子表。这样效率好低,为啥没直接生成join语句,直接执行一次查询?还是说我整错了?
...全文
相关推荐
SpringBoot JPA 表关联查询实例
本文将深入探讨如何使用Spring Boot JPA进行表关联查询,以一对多关系为例,展示如何通过JPA的`findBy`方法实现。
在Spring Boot中使用Spring-data-jpa实现分页查询
Spring Boot中使用Spring Data JPA实现分页查询在 Spring Boot 项目中,使用 Spring Data JPA 实现分页查询是一种非常常见的需求。
jpa-onetomany-springboot-maven-mysql:使用Spring Boot,Maven和MySQL的JPA一对多关系映射示例
Spring Boot,Maven和MySQL的JPA一对多关系示例指南先决条件JDK 1.8或更高版本Maven 3或更高版本MySQL 5.6或更高版本叠放Spring Data JPA Spri
spring boot 整合JPA及使用方法
JPQL支持定义参数、嵌套查询等功能,是一种面向对象的数据库查询语言。6. 数据库事务处理Spring Boot结合JPA可以很方便地管理数据库事务。
spring boot与cassandra集成,使用JPA方式。
在本文中,我们将深入探讨如何将Spring Boot框架与Cassandra数据库集成,并利用Java Persistence API (JPA) 进行数据操作。


