当将Cassandra列转换为java对象时丢失属性
问题描述:
我使用spring-data-cassandra-1.2.1.RELEASE来操作Cassandra数据库。事情时,我使用的代码。但最近几天我有一个问题,都顺利获得数据:当将Cassandra列转换为java对象时丢失属性
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;
}
有用户信息中的许多特性,但我只获得两个护照和uid属性。 我调试到方法,得到了从数据库获取数据是正确的,所有性能ready.but将它们转换为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;
}
行数据对,但结果是错误的,谁可以帮忙?
答
很可能你的实体类和它的对应关系模型是不匹配的。
我认为错误的模型是由hibernate或mongo创建的......但是这个项目很复杂,而且很难调试出错类的地方。 – MarsYoung