使用子句 IN 从 sql 转换为 jpql

Posted

技术标签:

【中文标题】使用子句 IN 从 sql 转换为 jpql【英文标题】:Convert from sql to jpql with clause IN 【发布时间】:2021-02-13 04:11:14 【问题描述】:

我在 JPQL 中转换的 SQL 中有这个请求

===SQL===
 SELECT * FROM ELEVE WHERE ELEVE.AGE IN ('7','8','5','6', '12' ) 

===JPQL===

SELECT E FROM ELEVE E  WHERE E.AGE IN ('7','8','5','6', '12' ) 

但它不起作用谁能解释我错过了什么

【问题讨论】:

当你说它不起作用时,它是什么意思?您收到的错误信息是什么? 【参考方案1】:

您缺少 * 或 select 之后的列名,它可以是 E.* 或只是 * 或者如果您想指定特定的列名,它应该像 E.columnanme

===SQL===
 SELECT * FROM ELEVE WHERE ELEVE.AGE IN ('7','8','5','6', '12' ) 

===JPQL===

SELECT E.*  FROM ELEVE E  WHERE E.AGE IN ('7','8','5','6', '12' ) 

【讨论】:

jpql 中不需要 * 在第二个查询中,您使用的是 Select E ,而 E 是表的名称而不是列,因此您应该使用 * from name the columns 您要我加 * 来获取所有列还是获取一列?事实上,我认为 E 匹配 jpql 中的所有列,这就是我这样做的原因 不是我,而是 sql 希望你在 select 之后放置列名或 * 好的,谢谢,但是你知道 jpql 是把我的 sql 转换成 jpql 的正确方法吗?

以上是关于使用子句 IN 从 sql 转换为 jpql的主要内容,如果未能解决你的问题,请参考以下文章

将另一个表中的逐行值转换为字符串并将其插入到 SQL 中的 NOT IN 子句中

如何转换逗号分隔的 varchar 以用于 pl/sql 中的“IN”子句?

将数组转换为 WHERE IN mysql 子句的格式

如何将复杂的 SQL 查询转换为 JPQL?

将此 JPQL 查询转换为 SQL 查询

JPA JPQL IN 子句:如何在 JPA 中使用 IN 子句?