当前位置: 首页 > 知识库问答 >
问题:

Spring数据Jpa@查询行为

敖硕
2023-03-14

谁能告诉我@Query注释将支持数据库独立性查询机制

例子:

public interface UserRepository extends JpaRepository<User, Long> {

  @Query("select u from User u where u.firstname like %?1")
  List<User> findByFirstnameEndsWith(String firstname);
} 

如果我写这个查询,它会支持所有的数据库,如Mysql、oracle、postgres。

我在spring data jpa参考文档站点中发现了类似的内容

@Query(value = "SELECT * FROM USERS WHERE EMAIL_ADDRESS = ?1", nativeQuery = true)
  User findByEmailAddress(String emailAddress);

这意味着如果我编写nativeQuery=true,它将被视为本机查询,如果不编写,它将表现为Spring data jpa特定查询,或者它将如何表现请澄清。

共有1个答案

葛和志
2023-03-14

如果将nativeQuery标志设置为true,则查询将被视为本机sql,其行为将取决于DB主机。如果您没有将nativeQuery设置为true,那么它将被视为JPQL,而对DB的真正查询是由JPA根据DB主机生成的,因此它与DB无关。

 类似资料:
  • 我有3个实体在我的数据库。实体A具有主密钥PK-A,实体B具有主密钥PK-B,实体C具有主密钥PK-C。 实体A与实体B具有1对多关系,实体B与实体C具有1对多关系 我想在Spring Data JPA中基于PK-A(实际上是实体B中的外键)查询实体C。有可能吗? 但这行不通。还有什么建议我可以试试吗?

  • 问题内容: 我正在使用Spring Data JPA,当我用来定义一个 WITHOUT 的查询时,它可以工作: 但是,如果我添加第二个参数,则将无法正常工作,Spring将解析该方法的名称,然后抛出 异常 。这是错误吗? 问题答案: 在Spring论坛上提出了一个类似的问题,指出要应用分页,必须派生第二个子查询。因为子查询引用的是相同的字段,所以您需要确保查询对引用的实体/表使用别名。这意味着您在

  • 我有一个带有嵌入Id的类。当我尝试使用Jpa存储库进行搜索时,它只返回一个空对象。问题似乎出在嵌入式Id中,因为我用一个没有这个Id的类进行了测试,结果很好。 当我针对数据库进行测试时,JPA在控制台中输出的查询工作正常。 并且没有输出错误。 编辑:数据库中有数据 EDIT2:添加了equals和hashcode。 编辑3:findAll方法有效。 实体 嵌入ID 存储库 服务 正如你所看到的,我

  • 在我的数据库中,我有一个具有以下属性的表“CITA”:id,fecha\u hora,description,id\u empleado,id\u cliente。 我还有一个Spring JPA存储库: 我需要这个查询: 我的问题是我不知道我应该把它放在哪里来还给我像地图这样的东西 因为它不起作用: 编辑 如果我试图从我的REST控制器调用estadistic as(),我有一个错误。 这是我的

  • 我使用注释和注释执行查询,并从数据库表中删除记录。 错误: xxx的例外。xxx。xx,原因='javax。坚持不懈TransactionRequiredException:执行更新/删除查询“和异常=”执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException:执行更新/删除查询'

  • 使用Spring Boot应用程序。我有一个类UserService,我在其中创建了一个动态查询,根据请求参数具有多个or条件: 我有UserRepository接口,我需要执行这个查询。到目前为止,我使用了findById等JPA函数或@Query(“从事件中选择id”)。 如何将此查询从服务类传递到存储库并执行它?