我的项目正在使用Spring数据mongodb。直到我编辑了其中包含文档数组的字段的文档之一时,我才没有出现错误。它之前工作正常,但现在我不断得到下面的错误。Spring Mongodb-无法实例化bean类[java.util.List]:指定的类是一个接口
我更新的字段是项目POJO类中的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 Repository类。
项目POJO类
@Document(collection="releases")
public class Project {
@Id
private String id;
......
@Field("impapps")
private List<ImpactedApplications> impapps=new ArrayList<ImpactedApplications>();
.....getters/setters
}
ImpactedApplication POJO类:
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类
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;
春库类
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','repository'和'artifacts'的值是MongoDB中的数组吗?如果是这样,'read(...)'方法应该运行到'typeToUse.isCollectionLike()&& dbo instanceof BasicDBList'子句中,并正确地为该属性创建一个集合。我假设你宁愿找到一些*不是*一个数组,因此实体分辨率就开始了。PS:你介意正确格式化代码示例吗?使帖子阅读起来更好,可能会吸引更多人回答。 –
@OliverGierke谢谢你的回复。我已经格式化了我的问题。我附上了'文档'图片。 'impappa'被创建为一个数组,'artifacts'被创建为数组,'repository'当前被创建为空数组。 – VBJ
现在,当我看到它关闭..我看到'impapps'存储为一个文档,而不是一个文件数组..我认为有我的代码中的问题。当我编辑'impapps'看起来它不是作为一个数组存储,而是作为一个文档。 – VBJ