我使用Spring Boot,因此使用Spring Data来执行查询。我想在Spring Data中创建复杂查询的最佳方法是使用@Query
注释。但是,我了解自定义查询中的SELECT
字段必须与给定返回类中的字段匹配。
如何创建Spring Data查询以匹配下面的SQL?
SELECT latitude, longitude, CS.*,
111.045* DEGREES(ACOS(COS(RADIANS(:lat))
* COS(RADIANS(CS.lat_centroid))
* COS(RADIANS(:long) - RADIANS(CS.long_centroid))
+ SIN(RADIANS(:lat))
* SIN(RADIANS(CS.lat_centroid)))) AS distance_in_km
FROM CensusSector CS
ORDER BY distance_in_km ASC LIMIT 1
PS1:我的回归物体是CensusSector。
PS2:我认为它不会有任何区别,但我正在使用MySQL。编辑1:正如@Bunti建议的那样,这些是我在尝试了一些观点后得到的消息。
为了对您发送的内容使用query.setMaxresults
,我必须关注this post,而不是@Query
与nativeQuery=true
一起使用。所以我做了this并得到以下例外:
org.hibernate.hql.internal.ast.QuerySyntaxException:
unexpected token: CensusSectorGroup near line 1, column 318
答案 0 :(得分:0)
我终于开始工作了。这就是我在Repository界面中所做的:
ORG $1000
START: ; first instruction of program
MOVE.W #0,D1 ;PUT 0 IN D1 (X)
MOVE.W #1,D2 ;PUT 1 IN D2 (Y)
LOOP CLR.W D3 ;Find the remainder
MOVE.W D1,D3
DIVU #2,D3
SWAP D3
CMP #0,D3 ;Compare remainder with 0
BEQ EQUAL ;If equal, then go to equal
ADD.W #1,D2 ;Y++
ADD.W #1,D1 ;X++
CMP #11,D1 ;Compare D1 with 11
BEQ DONE ;If D1 equals 11, break loop.
BRA LOOP
EQUAL MULU.W D1,D2 ;Multiply D1 and D2 and store it in D2
ADD.W #1,D1 ;X++
CMP #11,D1 ;Compare D1 with 11
BEQ DONE ;If D1 equals 11, break loop.
BRA LOOP
DONE LEA MESSAGE,A1
MOVE.W #14,D0
TRAP #15
MOVE.W D2,D1
MOVE.W #3,D0
TRAP #15
SIMHALT ; halt simulator
MESSAGE DC.W 'Y is: ',0
END START ; last line of source
感谢@Bunti的帮助。我确实必须遵循原生SQL提示。我不知道是否有办法让它与JPQL一起使用。