我試圖用1.1.1.RELEASE
spring-data-mongodb
版本堅持以下對象:PersistenceConstructor參數變量名稱不匹配的實例變量名
@Document
public static class TestObject {
private final int m_property;
@PersistenceConstructor
public TestObject(int a_property) {
m_property = a_property;
}
public int property() {
return m_property;
}
}
我得到一個MappingException
當我嘗試讀取對象從數據庫返回的(請參閱下面的完整堆棧跟蹤)
我的組使用的命名約定需要以a_
開頭的參數變量名稱和以m_
開頭的實例變量名稱。看起來好像spring-data-mongodb
正在假設構造函數參數變量名稱必須匹配對象實例變量名稱。
- 爲什麼
spring-data-mongodb
使用構造函數參數來構造函數中定義的實例變量映射? - 是否有另一種方法來定義這種映射,使
spring-data-mongodb
將正確構建我的對象,或者是我唯一的選擇打破命名約定?
。
Exception in thread "main" org.springframework.data.mapping.model.MappingException: No property a_property found on entity class com.recorder.TestRecorder$TestObject to bind constructor parameter to!
at org.springframework.data.mapping.model.PersistentEntityParameterValueProvider.getParameterValue(PersistentEntityParameterValueProvider.java:90)
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:70)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:229)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:209)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:173)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:169)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:72)
at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:1820)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1542)
at org.springframework.data.mongodb.core.MongoTemplate.findAll(MongoTemplate.java:1064)
at com.recorder.TestRecorder.main(TestRecorder.java:43)
這真是糟糕的命名約定,沒有任何意義。 –