繁体   English   中英

本机查询和 JPQL 之间有什么区别?

[英]What is the difference between a Native Query and a JPQL?

我是Spring Data JPA新手,我们在项目中有一些使用JPQL查询。 我有SQL知识,但作为初学者,我需要澄清以下问题:

1.Spring Data JPA可以使用哪些选项来创建查询? 我看到Native QueryJPQL ,但不确定是否还有其他选择?

2. Native Query 和 JPQL 有什么区别? 我刚刚意识到JPQL使用类名,例如 ProductCategory,而本机使用表名,例如 product_category。 还有其他区别吗?

JPQL 将根据实体转换为 SQL。

在 SQL 中你这样写:

SELECT d.familyname FROM car c LEFT JOIN driver d ON (c.driver_id = d.id) WHERE c.id = 123

如果您在 JPQL 中有完整的实体,则可以使用:

SELECT d.familyname FROM Car c LEFT JOIN c.driver d WHERE c.id = 123

如您所见,由于实体包含有关外键的信息,您可以缩短查询。

缺点

查询的语言支持有限,示例中来自 postgres 的非 sql 函数不可用。

优点

JPQL 取决于实体。 如果您更改 db-vendor,则不得更改 JPQL。

其他选项(除了 JPQL 和 SQL)

有一种叫做 HQL 的东西。 但我猜它完全兼容 JPQL,所以今天没有区别。

编辑:

你可以使用这个来缩短它:

SELECT c.driver.familyname FROM Car c WHERE c.id = 123

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM