我使用 spring-data-cassandra-1.2.1.RELEASE 来操作 Cassandra 数据库。一切顺利.但是最近几天,当我使用代码获取数据时,我遇到了一个问题:
public UserInfoCassandra selectUserInfo(String passport) {
Select select = QueryBuilder.select().from("userinfo");
select.setConsistencyLevel(ConsistencyLevel.QUORUM);
select.where(QueryBuilder.eq("passport", passport));
UserInfoCassandra userinfo = operations.selectOne(select,
UserInfoCassandra.class);
return userinfo;
}
userinfo 中有很多属性,但我只得到了两个护照和 uid 属性。 我调试了该方法,得到从db获取的数据是正确的,所有属性都准备好了,但是当将它们转换为java对象时,有些消失了。转换代码:
protected <T> T selectOne(Select query, CassandraConverterRowCallback<T> readRowCallback) {
ResultSet resultSet = query(query);
Iterator<Row> iterator = resultSet.iterator();
if (iterator.hasNext()) {
Row row = iterator.next();
T result = readRowCallback.doWith(row);
if (iterator.hasNext()) {
throw new DuplicateKeyException("found two or more results in query " + query);
}
return result;
}
return null;
}
行数据是对的,但结果是错的,谁能帮忙?
很可能您的实体类及其相应的关系模型不匹配。