【问题标题】:Syntax error in SQL statement org.h2.jdbc.JdbcSQLException:SQL 语句 org.h2.jdbc.JdbcSQLException 中的语法错误:
【发布时间】:2018-08-17 10:50:06
【问题描述】:

你好,这是我的仓库

@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-jpa h2


    【解决方案1】:

    使用nativeQuery = true,您告诉 Spring Data JDBC 将您的查询视为本机查询,即 SQL 查询。

    但是您提供的查询不是合法的 SQL。 它看起来很像 HQL,它是 JPQL 的 Hibernate 特定方言。

    要解决此问题,请删除 nativeQuery = true 部分或使用 SQL

    【讨论】:

      猜你喜欢
      • 2017-12-10
      • 2021-10-23
      • 2013-07-26
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 2015-02-25
      相关资源
      最近更新 更多