[英]What is the difference between a Native Query and a JPQL?
我是Spring Data JPA
新手,我们在项目中有一些使用JPQL
查询。 我有SQL
知识,但作为初学者,我需要澄清以下问题:
1.在Spring Data JPA
可以使用哪些选项来创建查询? 我看到Native Query
和JPQL
,但不确定是否还有其他选择?
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。
有一种叫做 HQL 的东西。 但我猜它完全兼容 JPQL,所以今天没有区别。
编辑:
你可以使用这个来缩短它:
SELECT c.driver.familyname FROM Car c WHERE c.id = 123
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.