spring-data-jpa - SQL 语句 org.h2.jdbc.JdbcSQLException 中的语法错误:
问题描述
嗨,这是我的存储库
@Repository
interface GuestRepository : JpaRepository<Guest, Long> {
@Query("from Guests g where g.date>=:fromDate and g.date<=:toDate ",nativeQuery = true)
fun findInPeriod(
@Param("fromDate") fromDate: Date
, @Param("toDate") toDate: Date
, pageRequest: Pageable
): Page<Guest>
}
这是我的客人对象
@Entity
@Table(name = "Guests")
data class Guest(
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "guest_seq")
@SequenceGenerator(name = "guest_seq", sequenceName = "guest_seq", allocationSize = 1)
val id: Long=0
,
@Column(length = 50, unique = true)
@NotNull
@Size(min = 4, max = 50)
val userName: String="username"
, val firstName: String?=null
, val lastName: String?=null
,
@Temporal(TemporalType.TIMESTAMP)
@NotNull
val date: Date=Date()
)
我使用 spring 和 h2,但是当我运行我的应用程序时,它会显示此错误消息
org.h2.jdbc.JdbcSQLException: Syntax error in SQL statement "FROM GUESTS G WHERE[*] G.DATE>=? AND G.DATE<=? LIMIT ? "; expected "(, USE, RIGHT, LEFT, FULL, INNER, JOIN, CROSS, NATURAL, ,, SELECT"; SQL statement:
解决方案
告诉 Spring Data JDBC将nativeQuery = true
您的查询视为本机查询,即 SQL 查询。
但是您提供的查询不是合法的 SQL。它看起来很像 HQL,它是 JPQL 的 Hibernate 特定方言。
要解决问题,请删除nativeQuery = true
部分或使用 SQL
推荐阅读
- angularjs - 图表 js 未在 Angular 应用程序中正确加载
- javascript - 如何将键路径数组返回到嵌套 javascript 对象中的值?
- r - R代码在从其他列中搜索匹配后替换一列中的每个单元格
- java - java - 如何将具有一对多字段的多个表映射到java中的同一个表?
- python - 为 raspberry pi3 交叉编译项目时无法识别“libpython2.7.a”格式
- ssas - 如何在 ssas 表格模型中为列设置千位分隔符
- javascript - 在javascript中创建对象时如何动态提供字段名?
- python - 浮点问题以及如何克服它
- c - 函数原型是否会转换 C 中的实际参数?
- javascript - 如何获得人类可读的 2 位数毫秒?