![](/img/trans.png)
[英]spring MVC3 errors Could not instantiate bean class [java.util.List]: Specified class is an interface Occasional
[英]Spring Mongodb- Could not instantiate bean class [java.util.List]: Specified class is an interface
我的项目正在使用 Spring 数据 mongodb。 在我对其中一个包含文档数组的字段的文档进行编辑之前,我没有出现以下错误。 它以前工作正常,但现在我不断收到以下错误。
我更新的字段是 Projects POJO class 中的 impapps。 我不确定如何清除此错误尝试了不同的方法但没有成功。
SEVERE: Servlet.service() for servlet [appServlet] in context with path [/mongodproject] threw exception [Request processing failed; nested exception is org.springframework.data.mapping.model.MappingInstantiationException: Could not instantiate bean class [java.util.List]: Specified class is an interface] with root cause
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [java.util.List]: Specified class is an interface
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:101)
at org.springframework.data.convert.ReflectionEntityInstantiator.createInstance(ReflectionEntityInstantiator.java:60)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:232)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.read(MappingMongoConverter.java:212)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.readValue(MappingMongoConverter.java:1008)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.access$100(MappingMongoConverter.java:75)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter$MongoDbPropertyValueProvider.getPropertyValue(MappingMongoConverter.java:957)
at org.springframework.data.mongodb.core.convert.MappingMongoConverter.getValueInternal(MappingMongoConverter.java:713)
这是我的 POJO 和 Spring 存储库 class。
POJO项目Class
@Document(collection="releases")
public class Project {
@Id
private String id;
......
@Field("impapps")
private List<ImpactedApplications> impapps=new ArrayList<ImpactedApplications>();
.....getters/setters
}
受影响的应用程序 POJO Class:
public class ImpactedApplications {
@Field("appid")
private String appId;
.....
@Field("repository")
private List<ScriptsRepo> rep=new ArrayList<ScriptsRepo>();
@Field("artifacts")
private List<Artifacts> artifacts=new ArrayList<Artifacts>();
//getter and setters
}
神器 POJO Class
public class Artifacts {
@Field("artifacttype")
private String artifactType;
@Field("documentlink")
private String documentLink;
@Field("arttestphase")
private String artTestPhase;
@Field("artifactname")
private ArtifactsEnums artifactsNames;
@Field("startdate")
private String startDate;
@Field("enddate")
private String endDate;
@Field("peerrev")
private boolean peerReview;
@Field("busrev")
private boolean busReview;
@Field("na")
private boolean na;
Spring 存储库类
public interface ProjectRepository extends Repository<Project, String> {
Project findById(String id);
List<Project> findByYearAndReleaseMonthNoOrderByProjectNameDesc(String year,String month, Sort sort);
Project findByYearAndReleaseMonthNoAndId(String year, String month,String id);
每当我调用上述方法时,我都会不断收到异常。
以下是我的文档当前的外观。
文档中的impapps
字段不是数组,而是嵌套文档。 因此,如果您将List<ImpactedApplications>
更改为简单的ImpactedApplications
则应该可以正常使用。
我有同样的例外:
尝试声明您的字段,如下所示:
@Field("impapps")
ArrayList<ImpactedApplications> impapps = new ArrayList<ImpactedApplications>();
我不喜欢这样做,但它对我有用。
编辑:
我的问题是由于聚合期间的展开操作。 它将数组(在我的类中声明为List <>)转换为对象,然后反射不起作用,因为spring期待列表。
使用 ArrayList someObjects 而不是 List someObjects。
它对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.