Cassandra的Java查询未返回正确的值

Cassandra的Java查询未返回正确的值,java,cassandra,datastax,Java,Cassandra,Datastax,我有一个从Cassandra数据库读取数据的Java应用程序。 我正在运行很多试用查询来测试我的应用程序:其中一些有效,另一些无效,而如果在DBeaver中运行,同样的无效查询是完全正确的 为什么我的应用程序不总是能够从Cassandra获取数据 我不会发布代码,因为代码很长,我只是想知道在处理Java中的Cassandra时,是否有一些特殊的方面需要注意。 谢谢。很可能您没有充分注意如何在查询中用引号括起参数。如果不知道您的数据模型、查询和集群大小,很难说,但这可能表明一致性问题 驱动程序的默

我有一个从Cassandra数据库读取数据的Java应用程序。 我正在运行很多试用查询来测试我的应用程序:其中一些有效,另一些无效,而如果在DBeaver中运行,同样的无效查询是完全正确的

为什么我的应用程序不总是能够从Cassandra获取数据

我不会发布代码,因为代码很长,我只是想知道在处理Java中的Cassandra时,是否有一些特殊的方面需要注意。
谢谢。

很可能您没有充分注意如何在查询中用引号括起参数。

如果不知道您的数据模型、查询和集群大小,很难说,但这可能表明一致性问题

驱动程序的默认一致性级别为本地一致性级别。如果有不一致(未修复)的数据,则可能最终查询不包含该数据的复制副本。在另一个具有不同查询计划或更高一致性的上下文中,您可能会看到数据


您可以通过在更高的一致性级别上发出查询来测试这一点。如果您发现它返回了数据,您将需要研究修复这些表。

您是对的。但我表达得太差了。我的意思是,有些查询运行正确,但有时相同的查询不返回值。但prepareStatement和BoundStatement当然不会改变。这就是我不明白的。好吧,我现在明白你的问题了。但我会把我的答案留在这里,以防将来有人会从中受益。好的,谢谢你的回答。读了你写的东西,我可以假设我的Java应用程序可能没有错,对吗?我明天有一个考试,我需要展示这个应用程序。db不在我的控制之下。我只需要代码是正确的。其他方面不在我的控制之下。您认为呢?看看cassandra支持的不同一致性级别。驱动程序的默认值可能是LOCAL\u ONE。即使您的表未损坏,对复制因子高于1的列族的写入也可能会命中另一个尚未包含最新数据的副本。这在cassandra中很容易发生,写入后立即读取可能会产生过时的数据。试着确定一下。