gpt4 book ai didi

java - 如何使用 JPA Criteria 左连接两个不相关的表?

转载 作者:行者123 更新时间:2023-11-30 10:25:48 25 4
gpt4 key购买 nike

这里我有两个表usersordersusers有两个字段first_namelast_name orders 有一个字段 full_name。出于某种原因,我无法更改数据库架构。

现在我有一个问题:

SELECT u.* FROM users u LEFT JOIN orders o ON o.full_name = CONCAT(u.first_name, ' ', u.last_name)

我需要将其转换为 JPA 规范,因为它是其他规范的一部分。以下是我的尝试:

实体:

@Entity
@Table(name = "users")
class User {
@Id
private Integer id;

@Column(name = "first_name")
private String firstName;

@Column(name = "last_name")
private String lastName;
}

@Entity
@Table(name = "orders")
class Order {
@Id
private Integer orderId;

@Column(name = "full_name")
private String fullName;
}

问题是,下面的语句第一个参数应该填什么

(root, query, criteraBuilder) -> {
Join<User,Order> join = root.join(???,JoinType.LEFT);
join.on(blablabla_condition)
}

这可行吗?

谢谢

最佳答案

为了沿着您尝试实现的路线前进,您必须将 User/Order 中的关联映射为 @OneToOne @OneToMany 基于一个用户是否可以有多个订单的惰性关联。为此,您必须映射连接操作,这是您在顶部的 native 查询中映射的复杂逻辑。我建议你看看@JoinFormula@JoinColumnOrFormula作为映射该连接的方法。

关于java - 如何使用 JPA Criteria 左连接两个不相关的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45936674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com