【问题标题】:Trouble using @Query with Spring-Boot JPA and Java在 Spring-Boot JPA 和 Java 中使用 @Query 时遇到问题
【发布时间】:2016-09-13 12:58:57
【问题描述】:

我是 spring-boot 的新手,并且在构建我的项目方面一直在稳步取得进展,但我已经到了需要执行特定查询而不是 spring 构建的查询的地步。

这是我的@Query 的样子:

@Query("select top 1 * from 'table name' where 'column' like 'value' and    message like 'value' order by 'column' desc")

由于它与工作相关,我不得不替换我们的数据库特定信息,但我认为你们仍然应该能够了解我正在尝试做什么。我的老板想要这个查询,因为如果没有这样的格式,我们会返回很多结果,我们只想要最近的 - 因此是前 1 个和 order by。

我看到的错误是“ or AS expected, got '1'”,到目前为止,我还没有在 Google 上找到任何东西。

我在这里做错了什么?

【问题讨论】:

  • @NeilStockton - 我更新了我的查询看起来更像 jpql 格式 code@Query(value = "select gl from table gl where gl.column1 like ?1 and gl.column2 = 'stuff ' order by gl.column desc") 现在它说它找不到表名。我遵循了here的例子。
  • 好的,我会尝试这条路线,看看会发生什么。为了记录-停止大喊大叫。我很清楚这是我第一次使用这个框架。

标签: java spring-boot spring-data-jpa


【解决方案1】:

我认为问题是您在@Query 中编写了本机查询,但没有设置@Query("...", nativeQuery=true),因为此注释默认接受JPQL 中的查询。阅读@Query 用法there

【讨论】:

  • 感谢您的回复。我在最后添加了那行,但我仍然看到同样的错误。
  • 能否在@Query 下方写下方法?
  • GlobalLog findByGuid(String guid);抱歉 - 不完全确定如何在评论回复中获取代码块。
  • 也许这取决于您如何将参数传递给查询。尝试在查询语句中将“值”更改为 ?1,然后它应该使用您传递给方法的字符串
  • 仍然没有 bueno。它主要集中在我的 SELECT TOP 之后的“1”。就像它正在使用 1 并尝试将其用作名称或其他东西,而不是我想要的行号。不幸的是,我对 SQL 了解不多,不知道这是否正在发生。感谢您的回复!
【解决方案2】:

可能你的数据库平台不支持TOP

对于 Oracle,您可以使用 ROWNUM

@Query("select * from 'table name' where 'column' like 'value' and message like 'value' order by 'column' desc ROWNUM <=1", nativeQuery = true)

对于 MySQL,您可以使用 LIMIT 1

@Query("select * from 'table name' where 'column' like 'value' and    message like 'value' order by 'column' desc LIMIT 1", nativeQuery = true) 

【讨论】:

  • 也试过这个,它只是不关心我正在做的任何事情。这是新查询:code@Query("select * from 'table name' where 'column' like 'value' and message like 'value' order by 'column' desc LIMIT 1", nativeQuery = true) 另外,这是我的属性文件中的属性(如果有帮助):url:jdbc:jtds:sqlserver://ip:host 用户名:用户名密码:密码驱动程序:net.sourceforge.jtds.jdbc.Driver 编辑:Bleh..this该死的回复格式:(
  • 您是否尝试过将此查询直接运行到数据库中?出现同样的错误?
  • 我有。我使用 HeidiSQL(在工作中),查询返回 1 个结果,这是我所期望的。
猜你喜欢
  • 1970-01-01
  • 2015-08-14
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多