0
votes

Printemps @Autowired - Pas de haricot de type 'com.pc.visitor.Visiteur

J'utilise l'annotation @autowire (Projet Spring Maven). Le service WebService / API suivant fonctionne bien. Jusqu'à ce que j'ajoute l'annotation @Autowire dans Post.java.

chemin de projet / fichiers :

  • PCBackend> Visiteur> POM.XML
  • PCBackend> Visiteur> SRC> Main> Visiteur> Application.Java
  • PCBackend> Visiteur> SRC> Main> Visiteur> NewVisitor.java
  • PCBackend> Visiteur> SRC> Main> Visiteur> Visitorexitory.java
  • PCBackend> Visiteur> SRC> Main> Visiteur> Post.java xxx xxx xxx xxx xxx xxx

    J'ai un sentiment que je suis supposé utiliser certaines de ces autres annotations telles que @Service, @Component, @Controller, @configuration, ou même @ComponentsCan, etc. Je ne peux tout simplement pas comprendre où répertoriez-vous. ces choses.

    Des idées quant à ce que je dois faire? Comme je l'ai dit, tout fonctionne parfait avec le @Autowired commenté.

    pensées?


11 commentaires

Pouvez-vous essayer les options suivantes: Si JParepository n'est pas nécessaire spécifiquement, changez-le avec CruRepository. Ou si vous avez besoin de jParePository, ajoutez @enableJPeePositories ("com.pc.visitor") sur votre application principale avec @springbooTapplication Annotation


Lorsque vous ajoutez @Autowired dans la classe RestController, vous obtenez le requis un haricot de type est-ce?


Cela devrait fonctionner bien, vous pouvez partager le lien GitHub si possible


Pour commencer vos dépendances sont en désordre. Supprimer le org.springframework.data dépendances et utilisez le Spring-boot-démarreur-data-data-data-jpa à la place. Vous n'avez pas besoin du jackson-databind soit comme celui-ci est également inclus dans le Spring-boot-starter-web par défaut. Et avez-vous vraiment besoin d'EclipsLink ou d'utiliser l'hibernate par défaut (qui fonctionne automatiquement) pour la liaison ECLPSE, vous devez faire une configuration vous-même.


Si vous devez utiliser EclipsLink au lieu d'hibernate, voir: Baeldung.com/spring-eclipselink


@stekin Quelle est la différence entre crudepository et jParePository? Quels sont les avantages et les inconvénients de chacun?


@M. Deinum, ha! Quand j'ai posté ceci, je savais que j'allais devenir mou pour les dépendances, je n'ai pas passé beaucoup de temps à creuser dans les dépendances de l'assistance de printemps, alors j'ai châmé mon chemin. Bien que, j'ai pris votre conseil et ajusté et que les choses ont l'air mieux dans ce dossier maintenant, finalement, cela n'a pas résolu le problème. Merci de votre aide.


@ 出羽 和 之 ne pense pas non plus avoir besoin de la dépendance de l'éclipse, donc j'ai également supprimé cela. Merci de votre aide.


@NewDeveloper JParepository s'étend du crudepostory (il y en a un autre entre eux; PangetandSortingRepository), donc JPeePository a des méthodes supplémentaires. Vous pouvez vérifier leur définition et voir leurs méthodes. Mais la chose est que le jParepository n'est pas automatiquement activé par défaut, vous devez ajouter explicitement, c'est pourquoi je vous ai demandé d'ajouter @enableJPeePositories ("com.pc.visitor") ou de le modifier à CruRepository


En fin de compte, la solution ici était que je n'avais pas d'annotation @ID avec une variable de type longue spécifiée dans le fichier "NewVisitor.java".


@stekin, cela a du sens pour la plupart. Je vais devoir regarder dans ce qui a le plus de sens. Merci.


4 Réponses :


0
votes

Une annotation @ID a été requise dans mon fichier / classe / classe de JAJAVA.

package com.pc.visitor;

import javax.validation.constraints.NotBlank;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "visitors")
public class newvisitor {

    @Id
    private long id;
    @NotBlank
    private String firstname;
    @NotBlank
    private String lastname;
    @NotBlank
    private String month;
    @NotBlank
    private String day;
    @NotBlank
    private String year;
    @NotBlank
    private String socialsecuritynumber;
    @NotBlank
    private String street1;
    private String street2;
    @NotBlank
    private String city;
    @NotBlank
    private String state;
    @NotBlank
    private String zip;
    @NotBlank
    private String phone;
    @NotBlank
    private String email;

    public newvisitor(){
        super();
    }

    public newvisitor(String firstname, String lastname, String month, String day, String year, String socialsecuritynumber, String street1, String street2, String city, String state, String zip, String phone, String email) {
        super();

        this.firstname = firstname;
        this.lastname = lastname;
        this.month = month;
        this.day = day;
        this.day = year;
        this.day = socialsecuritynumber;
        this.day = street1;
        this.day = street2;
        this.day = city;
        this.day = state;
        this.day = zip;
        this.day = phone;
        this.day = email;
    }




    /**
     * @return String return the firstname
     */
    public String getFirstname() {
        return firstname;
    }

    /**
     * @param firstname the firstname to set
     */
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    /**
     * @return String return the lastname
     */
    public String getLastname() {
        return lastname;
    }

    /**
     * @param lastname the lastname to set
     */
    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    /**
     * @return String return the month
     */
    public String getMonth() {
        return month;
    }

    /**
     * @param month the month to set
     */
    public void setMonth(String month) {
        this.month = month;
    }

    /**
     * @return String return the day
     */
    public String getDay() {
        return day;
    }

    /**
     * @param day the day to set
     */
    public void setDay(String day) {
        this.day = day;
    }

    /**
     * @return String return the year
     */
    public String getYear() {
        return year;
    }

    /**
     * @param year the year to set
     */
    public void setYear(String year) {
        this.year = year;
    }

    /**
     * @return String return the socialsecuritynumber
     */
    public String getSocialsecuritynumber() {
        return socialsecuritynumber;
    }

    /**
     * @param socialsecuritynumber the socialsecuritynumber to set
     */
    public void setSocialsecuritynumber(String socialsecuritynumber) {
        this.socialsecuritynumber = socialsecuritynumber;
    }

    /**
     * @return String return the street1
     */
    public String getStreet1() {
        return street1;
    }

    /**
     * @param street1 the street1 to set
     */
    public void setStreet1(String street1) {
        this.street1 = street1;
    }

    /**
     * @return String return the street2
     */
    public String getStreet2() {
        return street2;
    }

    /**
     * @param street2 the street2 to set
     */
    public void setStreet2(String street2) {
        this.street2 = street2;
    }

    /**
     * @return String return the city
     */
    public String getCity() {
        return city;
    }

    /**
     * @param city the city to set
     */
    public void setCity(String city) {
        this.city = city;
    }

    /**
     * @return String return the state
     */
    public String getState() {
        return state;
    }

    /**
     * @param state the state to set
     */
    public void setState(String state) {
        this.state = state;
    }

    /**
     * @return String return the zip
     */
    public String getZip() {
        return zip;
    }

    /**
     * @param zip the zip to set
     */
    public void setZip(String zip) {
        this.zip = zip;
    }

    /**
     * @return String return the phone
     */
    public String getPhone() {
        return phone;
    }

    /**
     * @param phone the phone to set
     */
    public void setPhone(String phone) {
        this.phone = phone;
    }

    /**
     * @return String return the email
     */
    public String getEmail() {
        return email;
    }

    /**
     * @param email the email to set
     */
    public void setEmail(String email) {
        this.email = email;
    }

}


0 commentaires

0
votes

1.

Vous pouvez utiliser Printemps initializr , qui génère une structure de projet de démarrage à ressort. p>

Vous devez ajouter ces dépendances au moins: p>

  • Web Spring WEB LI>
  • Données de printemps JPA LI>
  • validation (si vous utilisez 2.3.0 ou ultérieure) LI>
  • pilote MYSQL LI> ul>

    Utilisation de ces codes générés, pom.xml code> sera corrigé. p>

    (REMARQUE: le démarrage du ressort utilise Hibernate en tant que mise en œuvre JPA Par défaut, pas eclipselink a>.) p>


    2. p>

    L'entité JPA a besoin d'un identifiant (clé primaire) . p>

    Vous avez décidé que le type d'identifiant de Newserv est code> est long code> P>

    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    
    public class newvisitor {
    
        @Id
        @GeneratedValue
        private Long id;
    ...
    


2 commentaires

Merci, c'est comme ça que je l'ai maintenant, qu'est-ce que "GénéraValue" fait cependant?


Réglage pour ID Auto-Generation. ici est une explication plus détaillée.



0
votes

Quelques choses qui pourraient aider:

  1. La structure de colis présentée dans la question si elle n'est pas conforme aux conventions Maven:

    Vous devez utiliser:

    src / main / java / com / pc / visiteur

    et placez tous les fichiers là-bas

    1. classes de noms conformément aux conventions de nommage Java. Matériel de cas:

      Newsvisitor -> NewVisitor Post -> Post VisitOrpository -> VisitOrpository


0 commentaires

0
votes
  1. Mettez votre colis à l'intérieur SRC / MAIN / JAVA
  2. Suivez la convention de nommage Java pour créer un nom de classe.
  3. Data Spring JPA par défaut utilise Hibernate cependant que cela ne pourrait pas être la raison de @autowire Erreur.
  4. La classe d'entité doit avoir un champ marqué comme @ID.

1 commentaires

IdemPoke sur les fichiers de chemin, il suit la standard, SRC> Main> Java> COM> PC> Visiteur> Fichier. Tous les autres points ont un sens, merci d'avoir pris le temps de répondre. J'ai pu résoudre en ajoutant le @ID.