代码之家  ›  专栏  ›  技术社区  ›  max

SQL语句org.h2.jdbc.JdbcSQLException中的语法错误:

  •  1
  • max  · 技术社区  · 8 年前

    @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()
    )
    

    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:    
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Jens Schauder    8 年前

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

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

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