实体类:Student、WeightAddition、Weight,它们关系如下
public class Student {
@Id
private String code;
private String name;
private WeightAddition weightAddition;
public Student() {
//this.user = new User(1, "3434", SexEnum.MAN, new Weight(0, WeightUnit.KG));
this.weightAddition = new WeightAddition(new WeightAddition.Weight(0, WeightUnit.KG));
}
public class WeightAddition
{
/// 最大加成重量
private double maxAdditionWeight ;
/// 最大加成重量单位
private WeightUnit maxAdditionWeightUnit ;
public WeightAddition(Weight maxAdditionWeight)
{
this.maxAdditionWeight = maxAdditionWeight.value;
this.maxAdditionWeightUnit = maxAdditionWeight.weightUnit;
}
public static class Weight {
private double value;
private WeightUnit weightUnit;
public Weight(double value, WeightUnit weightUnit) {
this.value = value;
this.weightUnit = weightUnit;
}
}
当查询数据后不知道(List<Student> studentList=mongo.findAll();),会报错呢
报错信息如:
14:43:54,166 INFO ClassPathXmlApplicationContext:583 - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@50675690: startup date [Mon Jul 22 14:43:54 CST 2019]; root of context hierarchy
14:43:54,267 INFO XmlBeanDefinitionReader:317 - Loading XML bean definitions from class path resource [spring-context.xml]
Exception in thread "main" org.springframework.data.mapping.model.MappingInstantiationException: Failed to instantiate com.prc.domain.WeightAddition using constructor public com.prc.domain.WeightAddition(com.prc.domain.WeightAdditionPackagesType,double,com.prc.domain.WeightAddition$Weight) with arguments AllPackage,0.0,0.0
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:78)
at org.springframework.data.convert.ClassGeneratingEntityInstantiator.createInstance(ClassGeneratingEntityInstantiator.java:83)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:251)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1186)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$200(MappingMongoConverter.java:78)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:1134)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:870)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:283)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$1.doWithPersistentProperty(MappingMongoConverter.java:271)
at org.springframework.data.mapping.model.BasicPersistentEntity.doWithProperties(BasicPersistentEntity.java:309)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:271)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:231)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:191)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:187)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:78)
at org.springframework.data.mongodb.core.MongoTemplate$ReadDbObjectCallback.doWith(MongoTemplate.java:2230)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1906)
at org.springframework.data.mongodb.core.MongoTemplate.findAll(MongoTemplate.java:1312)
at org.springframework.data.mongodb.core.MongoTemplate.findAll(MongoTemplate.java:1308)
at com.prc.daoImpl.StudentImpl.findAll(StudentImpl.java:82)
at com.prc.test.TestMongo.main(TestMongo.java:53)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.prc.domain.WeightAddition]: Illegal arguments for constructor; nested exception is java.lang.IllegalArgumentException: argument type mismatch
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:151)
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:76)
... 21 more
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)