Spring Data Jpa使用 EntityManager 自定义复杂查询 您所在的位置:网站首页 Jpa多数据源entitymanager Spring Data Jpa使用 EntityManager 自定义复杂查询

Spring Data Jpa使用 EntityManager 自定义复杂查询

2024-07-17 10:14| 来源: 网络整理| 查看: 265

1、简介

在Spring Data Jpa中,通过JpaRepository接口提供了单表的CRUD操作,通过JpaSpecificationExecutor 和 Specification接口可以构建单表和多表的动态查询。 但是,在一些特殊场景下,仍然需要我们通过EntityManager来自定义复杂查询。

2、环境准备 数据库:mysql 项目搭建:演示项目通过Spring Boot 2.2.6构建,引入spring-boot-starter-data-jpa 2.1 实体类 学校 :学生 = 1 对 多 @Entity @Table(name = "test_school") @Getter @Setter public class SchoolEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String schoolName; @OneToMany(mappedBy = "school") private List students = new ArrayList(); } @Entity @Table(name = "test_student") @Getter @Setter public class StudentEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String studentName; private Integer age; private String address; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "school_id") private SchoolEntity school; } 3、示例 3.1 注入EntityManager // 注入EntityManager @PersistenceContext private EntityManager entityManager; 3.2 指定字段查询 3.2.1 查询单个结果的单个字段 @Override public String getStudentName(Long id) { CriteriaBuilder cb = entityManager.getCriteriaBuilder(); CriteriaQuery query = cb.createQuery(String.class); Root root = query.from(StudentEntity.class); // 查询单个参数 query.select(root.get("studentName")).where(cb.equal(root.get("id"), id)); // 查询结果只有1条数据 return entityManager.createQuery(query).getSingleResult(); }


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有