2016-03-24 9 views
1

パラメータをアクセサクエリに渡そうとしています。私は、次のしている:Apache Cassandra - LIMITがパラメータとして機能しないアクセサリー

@Accessor 
public interface ActivityAccessor { 

    @Query("SELECT * FROM activity WHERE user_id = :id limit :limit") 
    Result<UserActivity> findUserActivityByUserId(@Param("id") Long ownerId, @Param("limit") int limit); 
} 

はとアクセサメソッドを呼び出す:私は明記するアクセサメソッドを変更したときに、しかし

Caused by: com.datastax.driver.core.exceptions.SyntaxError: line 1:99 no viable alternative at input 'limit' (... LIMIT :[limit]) 

MappingManager manager = new MappingManager (getSession()); 
ActivityAccessor activityAccessor = manager.createAccessor(ActivityAccessor.class); 
Result<UserActivity> activities = activityAccessor.findUserActivityByUserId(userId, 20); 

私は次のエラーを取得します限界値は、それだけで正常に動作します:

@Query("SELECT * FROM activity WHERE user_id = :id limit 20") 
Result<UserActivity> findUserActivityByUserId(@Param("id") Long ownerId); 

誰かがこれがなぜ起こっているかの手掛かりを持っていますか?

答えて

6

limitは予約CQLキーワードであるとという名前のパラメータとして使用することはできません。それ以外のものに変更してください。例えば:

@Query("SELECT * FROM activity WHERE user_id = :id limit :max") 
Result<UserActivity> findUserActivityByUserId(@Param("id") Long ownerId, @Param("max") int limit); 
+0

ありがとう! paramsは実際の値に置き換えられるので問題ではないと思ったが、それは問題ではないと思う。 – Milan

関連する問題