Java spring.data.mongodb升级导致InvalidPersistentPropertyPath异常

Java spring.data.mongodb升级导致InvalidPersistentPropertyPath异常,java,spring,mongodb,Java,Spring,Mongodb,我们正在尝试升级项目中的以下依赖项: spring.data.mongodb:从1.1.0.RELEASE到1.8.2.RELEASE org.mongo.driver:从2.12.3到2.14.1 但是,在旧版本中,DBObject映射遇到了问题 简化代码: DevicePojo.java @Id private String _id; private Long appID; private String UDIDHashed; ** getters/setters ** public

我们正在尝试升级项目中的以下依赖项:

  • spring.data.mongodb:从1.1.0.RELEASE到1.8.2.RELEASE
  • org.mongo.driver:从2.12.3到2.14.1
但是,在旧版本中,DBObject映射遇到了问题

简化代码:

DevicePojo.java

@Id
private String _id;
private Long appID;
private String UDIDHashed;

** getters/setters **
public DevicePojo getDeviceByAppIdAndUDIDHashed(Long applicationId, String udidHashed){
    Criteria criteriaAppId = Criteria.where("appID").is(applicationId);
    Criteria criteriaUDIDHashed = Criteria.where("UDIDHashed").is(udidHashed);
    Criteria criteria = new Criteria();
    criteria.andOperator(criteriaAppId, criteriaUDIDHashed);
    Query query = Query.query(criteria);
    return findOne(query);
}
DevicePositionImpl.java

@Id
private String _id;
private Long appID;
private String UDIDHashed;

** getters/setters **
public DevicePojo getDeviceByAppIdAndUDIDHashed(Long applicationId, String udidHashed){
    Criteria criteriaAppId = Criteria.where("appID").is(applicationId);
    Criteria criteriaUDIDHashed = Criteria.where("UDIDHashed").is(udidHashed);
    Criteria criteria = new Criteria();
    criteria.andOperator(criteriaAppId, criteriaUDIDHashed);
    Query query = Query.query(criteria);
    return findOne(query);
}
引发异常:

org.springframework.data.mapping.context.InvalidPersistentPropertyPath: No property uDIDHashed found on com.appoxee.server.data.mongo.pojo.DevicePojo!
        at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:256)
        at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:229)
        at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:204)
        at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.getPath(QueryMapper.java:838)
        at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:729)
        at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:706)
        at org.springframework.data.mongodb.core.convert.QueryMapper.createPropertyField(QueryMapper.java:216)
        at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:122)
        at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedKeyword(QueryMapper.java:235)
        at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:100)
        at org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1664)
        at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:564)
        at org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:559)
        at com.appoxee.server.data.mongo.dao.DeviceRepositoryImpl.findOne(DeviceRepositoryImpl.java:41)
        at com.appoxee.server.data.mongo.dao.DeviceRepositoryImpl.getDeviceByAppIdAndUDIDHashed(DeviceRepositoryImpl.java:205)
org.springframework.data.mapping.context.InvalidPersistentPropertyPath:在com.appoxee.server.data.mongo.pojo.DevicePojo上找不到任何属性uDIDHashed!
位于org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:256)
位于org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:229)
位于org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:204)
位于org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.getPath(QueryMapper.java:838)
位于org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField。(QueryMapper.java:729)
位于org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField。(QueryMapper.java:706)
位于org.springframework.data.mongodb.core.convert.QueryMapper.createPropertyField(QueryMapper.java:216)
位于org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:122)
位于org.springframework.data.mongodb.core.convert.QueryMapper.getMappedKeyword(QueryMapper.java:235)
位于org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:100)
位于org.springframework.data.mongodb.core.MongoTemplate.doFindOne(MongoTemplate.java:1664)
位于org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:564)
位于org.springframework.data.mongodb.core.MongoTemplate.findOne(MongoTemplate.java:559)
位于com.appoxee.server.data.mongo.dao.DevicePositionImpl.findOne(DevicePositionImpl.java:41)
位于com.appoxee.server.data.mongo.dao.DevicePositoryImpl.GetDeviceByAppIDandudiHashed(DevicePositoryImpl.java:205)
我们尝试用@field(value=“UDIDHashed”)和@Column(name=“UDIDHashed”)注释UDIDHashed字段,但出于某种原因,它不断将第一个字符改为小写。关于这一点,我能找到的唯一类似的东西是一个大写字段注释为@Id的bug,但这应该是自spring.data.mongodb版本1.5.0以来修复的