jpa api原生JOIN-基于CriteriaQuery的关联

本文介绍了如何使用Java持久化API (JPA) 进行左连接查询,并展示了将JPQL转换为SQL的具体实例。通过EntityManager和CriteriaBuilder进行条件设置,实现对TestStudentPo和TestClassPo两个实体之间的关联查询。

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

EntityManager em = emf.createEntityManager();
CriteriaBuilder cb = em.getCriteriaBuilder();

CriteriaQuery<TestStudentPo> query = cb.createQuery(TestStudentPo.class);

Root<TestStudentPo> root = query.from(TestStudentPo.class);
//创建关联关系
Join<TestStudentPo, TestClassPo> join = root.join("testClassPo", JoinType.LEFT);

query.select(root).where(cb.equal(join.get("classId"), "1"));

List<TestStudentPo> list = em.createQuery(query).getResultList();

------------

这段JPA API 转为sql为:

------------


SELECT
a.STUDENT_ID AS STUDENT_1_2_,
a.CLASS_ID AS CLASS_ID2_2_,
a.COURSE_ID AS COURSE_I3_2_,
a.STUDENT_NAME AS STUDENT_4_2_,
a.TIME AS TIME5_2_
FROM
test_student a
LEFT OUTER JOIN test_class b ON a.CLASS_ID = b.CLASS_ID
WHERE
b.CLASS_ID =?

最重要的是这个关系要配置好

    @OneToOne
    @JoinColumn(name="CLASS_ID",referencedColumnName = "CLASS_ID")
    private TestClassPo testClassPo;

转载于:https://my.oschina.net/u/3005325/blog/2879089

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值