gpt4 book ai didi

java - 如何将 native 查询结果映射到 java 类

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

我正在 jpa 中处理 java nativequery。我在 Practice 类中得到了结果,但是我如何将距离变量映射到我的 Practice 类。请帮助我。

List<Practice> resultData=(List<Practice>)em.createNativeQuery("SELECT *, ( 3959 * acos( cos( radians(?1) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(?2) ) + sin( radians(?1) ) * sin( radians( latitude ) ) ) ) AS distance FROM tb_practice HAVING distance < 200 ORDER BY distance;",Practice.class)
.setParameter(1, latitude)
.setParameter(2, longitude)
.getResultList();

这是我的查询结果:请帮助如何将距离变量映射到我的类练习。

enter image description here

<小时/>
@Entity(name = "tb_practice")
public class Practice {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

private String address;

private String city;

private String distance;
}

这是练习表。

最佳答案

我认为您需要一个 group by 作为派生表表达式。

您需要列出所有 tb_practice 表列而不是 column1...columnN,因此这是您的查询:

List<Practice> resultData= (List<Practice>)
em.createNativeQuery("
SELECT NEW Practice(
p.id,
p.address,
p.city)
FROM
(
SELECT
p.id,
p.address,
p.city,
( 3959 * acos( cos( radians(?1) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians(?2) ) + sin( radians(?1) ) * sin( radians( latitude ) ) ) ) AS distance
FROM
tb_practice
GROUP BY
p.id,
p.address,
p.city
HAVING distance < 200
ORDER BY distance
) practice_by_distance
",Practice.class)
.setParameter(1, latitude)
.setParameter(2, longitude)
.getResultList();

关于java - 如何将 native 查询结果映射到 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24359661/

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