Tôi đang cố gắng để tồn tại đối tượng sau đây với spring-data-mongodb
phiên bản 1.1.1.RELEASE
:PersistenceConstructor luận tên biến không phù hợp ví dụ biến tên
@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;
}
}
tôi nhận được một MappingException
khi tôi cố gắng đọc các đối tượng trở về từ cơ sở dữ liệu (xem full stacktrace bên dưới)
Quy ước đặt tên nhóm của tôi sử dụng yêu cầu tên biến đối số được đặt trước bởi a_
và tên biến mẫu được bắt đầu bằng m_
. Có vẻ như spring-data-mongodb
là giả định rằng tên biến đối số hàm tạo phải khớp với tên biến đối tượng.
- Tại sao không
spring-data-mongodb
sử dụng đối số hàm tạo cho ánh xạ biến thể mà tôi xác định trong hàm tạo? - Có cách nào khác để xác định ánh xạ này sao cho
spring-data-mongodb
sẽ xây dựng đúng đối tượng của tôi hay là tùy chọn duy nhất của tôi để phá vỡ quy ước đặt tên?
.
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)
Đây thực sự là quy ước đặt tên crappy không có ý nghĩa gì. –