2017-10-03 2 views
2

Je travaille avec un projet de démarrage de printemps et j'ai la classe d'entité suivante fournie,org.springframework.beans.factory.BeanCreationException: Erreur de création de haricot avec le nom « crudRepository »

@Entity 
public class User { 

    // form:hidden - hidden value 
    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    Integer id; 

    // form:input - textbox 
    @Column(name = "name", columnDefinition = "VARCHAR(30)", nullable = false) 
    String name; 

    // form:input - textbox 
    @Column(name = "email", columnDefinition = "VARCHAR(50)", nullable = false) 
    String email; 

    // form:textarea - textarea 
    @Column(name = "address", columnDefinition = "VARCHAR(255)", nullable = true) 
    String address; 

    // form:input - password 
    @Column(name = "password", columnDefinition = "VARCHAR(20)", nullable = false) 
    String password; 

    // form:input - password 
    String confirmPassword; 

    // form:checkbox - single checkbox 
    @Column(name = "newsletter", nullable = true) 
    boolean newsletter; 

    // form:checkboxes - multiple checkboxes 
// @Column(columnDefinition = "VARCHAR(500)", nullable = false) 
    @ElementCollection 
    List<String> framework; 

    // form:radiobutton - radio button 
    @Column(name = "sex", columnDefinition = "VARCHAR(1)", nullable = true) 
    String sex; 

    // form:radiobuttons - radio button 
    @Column(name = "number", nullable = true) 
    Integer number; 

    // form:select - form:option - dropdown - single select 
    @Column(name = "", columnDefinition = "VARCHAR(10)", nullable = true) 
    String country; 

    // form:select - multiple=true - dropdown - multiple select 
// @Column(columnDefinition = "VARCHAR(500)", nullable = true) 
    @ElementCollection 
    List<String> skill; 

    //Check if this is for New of Update 
    public boolean isNew() { 
     return (this.id == null); 
    } 


    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getEmail() { 
     return email; 
    } 

    public void setEmail(String email) { 
     this.email = email; 
    } 

    public String getAddress() { 
     return address; 
    } 

    public void setAddress(String address) { 
     this.address = address; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getConfirmPassword() { 
     return confirmPassword; 
    } 

    public void setConfirmPassword(String confirmPassword) { 
     this.confirmPassword = confirmPassword; 
    } 

    public boolean isNewsletter() { 
     return newsletter; 
    } 

    public void setNewsletter(boolean newsletter) { 
     this.newsletter = newsletter; 
    } 

    public List<String> getFramework() { 
     return framework; 
    } 

    public void setFramework(List<String> framework) { 
     this.framework = framework; 
    } 

    public String getSex() { 
     return sex; 
    } 

    public void setSex(String sex) { 
     this.sex = sex; 
    } 

    public Integer getNumber() { 
     return number; 
    } 

    public void setNumber(Integer number) { 
     this.number = number; 
    } 

    public String getCountry() { 
     return country; 
    } 

    public void setCountry(String country) { 
     this.country = country; 
    } 

    public List<String> getSkill() { 
     return skill; 
    } 

    public void setSkill(List<String> skill) { 
     this.skill = skill; 
    } 

    @Override 
    public boolean equals(Object o) { 
     if (this == o) return true; 
     if (!(o instanceof User)) return false; 

     User user = (User) o; 

     if (isNewsletter() != user.isNewsletter()) return false; 
     if (!getId().equals(user.getId())) return false; 
     if (!getName().equals(user.getName())) return false; 
     if (!getEmail().equals(user.getEmail())) return false; 
     if (getAddress() != null ? !getAddress().equals(user.getAddress()) : user.getAddress() != null) return false; 
     if (!getPassword().equals(user.getPassword())) return false; 
     if (getConfirmPassword() != null ? !getConfirmPassword().equals(user.getConfirmPassword()) : user.getConfirmPassword() != null) 
      return false; 
     if (!getFramework().equals(user.getFramework())) return false; 
     if (getSex() != null ? !getSex().equals(user.getSex()) : user.getSex() != null) return false; 
     if (getNumber() != null ? !getNumber().equals(user.getNumber()) : user.getNumber() != null) return false; 
     if (getCountry() != null ? !getCountry().equals(user.getCountry()) : user.getCountry() != null) return false; 
     return getSkill() != null ? getSkill().equals(user.getSkill()) : user.getSkill() == null; 
    } 

    @Override 
    public int hashCode() { 

     int result = getId().hashCode(); 

     result = 31 * result + getName().hashCode(); 
     result = 31 * result + getEmail().hashCode(); 
     result = 31 * result + (getAddress() != null ? getAddress().hashCode() : 0); 
     result = 31 * result + getPassword().hashCode(); 
     result = 31 * result + (getConfirmPassword() != null ? getConfirmPassword().hashCode() : 0); 
     result = 31 * result + (isNewsletter() ? 1 : 0); 
     result = 31 * result + getFramework().hashCode(); 
     result = 31 * result + (getSex() != null ? getSex().hashCode() : 0); 
     result = 31 * result + (getNumber() != null ? getNumber().hashCode() : 0); 
     result = 31 * result + (getCountry() != null ? getCountry().hashCode() : 0); 
     result = 31 * result + (getSkill() != null ? getSkill().hashCode() : 0); 
     return result; 
    } 
} 

Je voudrais écrire quelques opérations personnalisées et essayé de définir les interfaces à cet égard. Les interfaces du référentiel sont fournies ci-dessous,

public interface CrudRepository<T, ID extends Serializable> 
     extends Repository<T, ID> { 

    <S extends T> S save(S entity); 

    T findOne(ID primaryKey); 

    Iterable<T> findAll(); 

    Long count(); 

    void delete(T entity); 

    boolean exists(ID primaryKey); 

    // … more functionality omitted. 
} 

Cette interface étend l'interface fournie précédemment,

@Repository 
public interface IUserRepository extends CrudRepository<User, Long>{ 

} 

Alors que je compile le programme, je reçois l'erreur suivante,

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'crudRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class java.lang.Object 

Qu'est-ce le problème ici?

Updated

La classe Spring Boot d'application est,

@SpringBootApplication 
public class WebApplication extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(WebApplication.class); 
    } 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(WebApplication.class, args); 
    } 
} 
+1

Veuillez publier votre classe d'application Spring Boot. –

+0

J'ai fourni la classe – Arefe

+1

Vous devez utiliser '@ ComponentScan' dans votre classe d'application Spring Boot pour récupérer toutes les classes. –

Répondre

4

Ajouter à votre @NoRepositoryBean CrudRepository. Cela permettra à l'auto-configuration de se produire sans avoir à définir manuellement les packages de base d'analyse des composants.

L'interface org.springframework.data.repository.Repository est un marqueur pour un référentiel de données de printemps réel. Puisque votre CrudRepository étend le Repository, le Spring essaie d'initialiser un dépôt géré par Spring nommé crudRepository pour T (qui se traduit essentiellement par Object). Comme Object n'est pas géré par Hibernate, il échoue à la validation au démarrage et se bloque. @NoRepositoryBean demandera à Spring de ne pas générer de référentiel de sauvegarde pour une classe particulière qui implémente Repository.

+1

C'est ce qui résout le problème. Merci beaucoup – Arefe