gpt4 book ai didi

java - 我可以将此 Mysql 查询转换为 JPA 吗?

转载 作者:行者123 更新时间:2023-11-29 03:13:17 25 4
gpt4 key购买 nike

我对 SQL 相当熟悉,但对 Java Persistence API 还很陌生。我通过 Play Framework 使用 JPA。

如果可以的话,我想将以下 MySql 查询转换为纯 JPA 代码:

SELECT a.id, b.id
FROM Rankable a
INNER JOIN Rankable b on a.id < b.id
WHERE
a.category_id = ? AND b.category_id = ?
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.lower in (a.id, b.id))
AND NOT EXISTS (
SELECT *
FROM Comparison c
WHERE c.higher IN (a.id, b.id))
ORDER BY a.id * rand()
LIMIT 1;

此查询的目的是从 Rankable 表中选择两行,但要确保该特定对不存在于比较表中。

从 Play/JPA 调用这样一个有点复杂的查询的最佳方法是什么?

最佳答案

可以在 JPA 中进行自连接。

看看this example

来自例子

    @NamedQuery(name="siblings", query="select distinct sibling1 "
+ "from Deity sibling1, Deity sibling2 where "
+ "sibling1.father = sibling2.father "
+ "and sibling1.mother = sibling2.mother "
+ "and sibling2 = ?1 and sibling1 <> ?1"),

关于java - 我可以将此 Mysql 查询转换为 JPA 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4831650/

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