我正在将使用DB2数据库的应用程序从Spring(IBM Websphere)迁移到Springboot(Embedded Tomcat)。
使用休眠 4.1.9.Final 的现有应用程序可以通过以下FETCH查询完美运行:
@Query(
"SELECT ssss FROM SSSSPackageDiscountLoad ssss, SSSBasicLoad ttt WHERE ssss.schemeId = ttt.id AND ttt.code = :schemeCode AND "
+ "ssss.ruleCode = :ruleCode ORDER BY ssss.effDate DESC FETCH FIRST 1 ROWS ONLY")
已迁移的springboot(版本 2.1.7.RELEASE )应用使用了休眠 5.3.10.Final 。
启动应用程序会给我这个问题:
由于:org.hibernate.hql.internal.ast.QuerySyntaxException: 意外令牌:FETCH在第1行第255列附近
答案 0 :(得分:0)
您可以使用等效的语句:
@Query(
"SELECT ssss FROM SSSSPackageDiscountLoad ssss, SSSBasicLoad ttt WHERE ssss.schemeId = ttt.id AND ttt.code = :schemeCode AND "
+ "ssss.ruleCode = :ruleCode ORDER BY ssss.effDate DESC LIMIT 1")
但是,如果您想按原样使用查询,则需要按照建议的here强制使用方言。
在您的情况下,这应该可行:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DB2Dialect