4

私は春のデータJPA 1.8.2を使用しており、最高の結果を得ようとしています。私は次の方法を使用しています

LearningSession findTopBySourceAndExternalLmsSessionIdAndCourseCodeAndLearnerEnrollmentEnrollmentStatusOrderByIdAsc(String source, String externalLmsSessionId, String courseCode, String enrollmentStatus);

OrderByを削除してみました

LearningSession findTopBySourceAndExternalLmsSessionIdAndCourseCodeAndLearnerEnrollmentEnrollmentStatus(String source, String externalLmsSessionId, String courseCode, String enrollmentStatus);

どちらの場合も、休止状態は次のクエリを生成しています。*あらゆることに使用するだけです。最終的に注文するためにorder by learningse0_.id asc

select TOP ?  learningse0_.*
from LearningSession learningse0_ 
left outer join LearnerEnrollment learnerenr1_ on learningse0_.ENROLLMENT_ID=learnerenr1_.id 
where learningse0_.source=?
and learningse0_.externalLmsSessionId=?
and learningse0_.courseCode=?
and learnerenr1_.enrollmentStatus=?

クエリは正しいですが、次の例外が発生しています

Hibernate: select TOP ?  learningse0_.id as id1_47_, learningse0_.brandName as brandNam2_47_, learningse0_.courseApprovalId as courseAp3_47_, learningse0_.courseCode as courseCo4_47_, learningse0_.endTime as endTime5_47_, learningse0_.externalLmsSessionId as external6_47_, learningse0_.externalLmsUrl as external7_47_, learningse0_.isCourseMessageDisplay as isCourse8_47_, learningse0_.LANGUAGE_ID as LANGUAG15_47_, learningse0_.LEARNER_ID as LEARNER16_47_, learningse0_.ENROLLMENT_ID as ENROLLM17_47_, learningse0_.learningSessionGuid as learning9_47_, learningse0_.lmsProvider as lmsProv10_47_, learningse0_.redirectUrl as redirec11_47_, learningse0_.source as source12_47_, learningse0_.startTime as startTi13_47_, learningse0_.uniqueUserGuid as uniqueU14_47_ from LearningSession learningse0_ left outer join LearnerEnrollment learnerenr1_ on learningse0_.ENROLLMENT_ID=learnerenr1_.id where learningse0_.source=? and learningse0_.externalLmsSessionId=? and learningse0_.courseCode=? and learnerenr1_.enrollmentStatus=? order by learningse0_.id asc
13:53:47.686 [main] DEBUG org.hibernate.engine.jdbc.spi.SqlExceptionHelper - could not extract ResultSet [n/a]
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '@P0'          
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216) ~[sqljdbc4-4.0.jar:?]

私が間違っていることは何ですか?First、を試しましたがTop1First1結果はエラーです。助けてください。

ありがとう

4

2 に答える 2

8

これがうまくいくかどうかはわかりませんが、同じエラーに遭遇し、多くの掘り下げた後、JpaVendorAdapterでSqlServerDialectを使用していることがわかったので、SqlServer2012(SqlServerDialect2012)専用に変更するとエラーが発生しました去った:

<bean id="jpaVendorAdapter"
    class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
    <property name="database" value="SQL_SERVER" />
    <property name="databasePlatform" value="org.hibernate.dialect.SQLServer2012Dialect" />
    <property name="showSql" value="true" />
</bean>
于 2015-11-23T23:23:45.470 に答える
0

Hibernate 5 + Spring Data でも同じ問題が発生しました。Dialect を SQLServer2012Dialect に変更するとうまくいきました。

パブリック クラス SQLServerNativeDialect は SQLServer2012Dialect を拡張します

参考:: https://hibernate.atlassian.net/browse/HHH-10032

ありがとう、

于 2016-08-18T10:50:02.743 に答える