Primavera Mongodb – impossibile creare un’istanza di classe bean [java.util.Elenco]: classe Specificata è un’interfaccia

il mio progetto è di sorgente di dati di mongodb. Non stavo facendo seguito di errore fino a quando ho fatto una modifica a uno dei documenti che dispone di un campo, con vasta gamma di Documenti in esso. Si stava lavorando bene prima, ma ora continuo a ricevere il seguente errore.

Sul campo, ho aggiornato è stato impapps nei Progetti POJO classe. Non so come cancellare questo errore provato diverse cose, ma non ha funzionato.

    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)

Qui sono i miei POJO e Molla classe Repository.

Progetto POJO Classe

@Document(collection="releases")
 public class Project {
@Id
private String id;
 ......
@Field("impapps")
private List<ImpactedApplications> impapps=new ArrayList<ImpactedApplications>();
    .....getters/setters
}   

ImpactedApplication POJO Classe:

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

}

Artefatti POJO Classe

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;

Primavera Repository classi

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);

Ogni volta che io chiamo i metodi di cui sopra, ho sempre l’eccezione.

Sotto è come il mio documento è attualmente alla ricerca.

Primavera Mongodb - impossibile creare un'istanza di classe bean [java.util.Elenco]: classe Specificata è un'interfaccia

Che cosa fanno i documenti di guardare come si sta tentando di leggere? È possibile controllare che i valori di impapps, repository e artifacts sono le matrici di MongoDB? Se è così, il read(…) metodo deve essere eseguito in typeToUse.isCollectionLike() && dbo instanceof BasicDBList clausola e creare correttamente una collezione per la proprietà. Sto supponendo che si trovi piuttosto qualcosa di non un array e quindi la risoluzione delle entità a calci. PS: ti dispiacerebbe correttamente la formattazione del codice di campioni? Lo rende molto meglio a leggere e probabilmente attirare più persone a rispondere.
Grazie per la risposta. Ho formattato la mia domanda un po’. E ho la document foto allegata. impappa è creato come un array, artifacts viene creato un array e repository è creato come vuoto array attualmente.
ora quando la vedo..vedo che impapps è la memorizzazione di un documento, invece di un array di documenti..penso non ci sia problemi nel mio codice. Quando posso modificare il impapps sembra non memorizzare in un array, ma come un documento.
Dal momento che sei qui..mi potete dire qual’è il modo giusto per aggiornare un uscita di documento in un array..ho provato questo, ma è solo la sostituzione di come documento. Criteria crit=new Criteria().andOperator( Criteria.where("_id").is(projectId), Criteria.where("impapps.appid").is(impapp.getAppId()) );Query query=new Query(crit);Update upd=new Update(); upd.set("impapps", impapp);mongoTemplate.updateFirst(query, upd, Project.class)
nevermind sir. L’ho preso con l’aggiunta di un segno di$. Grazie per guardare la posta. Hai una grande vacanza!!!

OriginaleL’autore VBJ | 2013-12-18

2 Replies
  1. 4

    Il impapps di campo nel documento non è un array, ma nidificata documento. Quindi, se si cambia il vostro List<ImpactedApplications> per un semplice ImpactedApplications questo dovrebbe leggere bene.

    OriginaleL’autore Oliver Drotbohm

  2. 0

    Ho avuto la stessa eccezione :

    Provare per dichiarare il vostro campo come questo :

    @Field("impapps")
    ArrayList<ImpactedApplications> impapps = new ArrayList<ImpactedApplications>();

    Non mi piace farlo, ma funziona per me.

    edit:

    Il mio problema era dovuto per rilassarsi durante il funzionamento di aggregazione.
    Trasformare array (dichiarata Elenco<> nella mia classe) in oggetto
    e poi la riflessione non funziona perché la primavera è in attesa di un elenco.

    OriginaleL’autore bastien

Lascia un commento