我正在使用Datastax Java驱动程序映射器。Doc和Github描述了使用不带参数的@Select注释选择表中所有行的可能性。
https://docs.datastax.com/en/developer/java-driver/4.4/manual/mapper/daos/select/
https://github.com/datastax/java-driver/pull/1285
所以我做了以下事情:
@Dao
public interface SchaduleJobDao {
(...)
@Select
@StatementAttributes (consistencyLevel = "LOCAL_QUORUM")
PagingIterable<ScheduleJobEntity> all();
(..)
但是,Eclipse在all()方法行中引发了错误:
“无效的参数列表:不使用自定义子句的选择方法必须采用完全相同的分区键组件(ScheduleJobEntity的预期PK:[java.lang.String])”
根据上述参考,应允许。
我确实检查了版本,在4.2之前的版本中,此功能应该正常工作,我使用的是4.4。因此,它似乎与版本无关。我的pom文件:
<dependency>
<groupId>com.datastax.oss</groupId>
<artifactId>java-driver-mapper-processor</artifactId>
<version>4.4.0</version>
</dependency>
我可能做错了什么?在哪里可以解决这个问题?
谢谢
我认为这可能是配置问题。您能检查一下您的POM是否在其他地方没有引用较旧版本的处理器吗?特别是,提供此功能的另一种方法是在编译器插件的annotationProcessorPaths
部分,如here所示。
我们有一个integration test涵盖了这种情况,我只是仔细检查了它是否在4.4.0中通过。同样,在我们引入该功能后,错误消息略有变化,它曾经说“必须使用分区键组件”,现在却说“必须match”;您引用的是旧邮件。