как решить эту ошибку в Springboot Рассмотрите возможность маркировки одного из beans как @Primary?

У меня эта ошибка, так как я вставляю crudrepository в свой интерфейс:

public interface UserRepository extends CrudRepository<Utilisateur, Integer>{

    public Utilisateur findUserById(int id);
    
}

вот моя сущность

@Entity
@Table(name="utilisateur")
public class Utilisateur {

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;

@NotEmpty 
@Email
private String Email; 

@NotEmpty  
@JsonIgnore
private String Password;

private String Role;

public Utilisateur() {}


public Utilisateur(String Email, String Password){
    this.Email=Email;
    this.Password=Password;
}

конечно я ставлю геттеры и сеттеры

и мой контроллер:

@RestController
public class UserController {

    @Autowired
    UserRepository userRepository; 
         
       @PostMapping(value = "/User/add")

    public ResponseEntity<Void> ajouterProduit(@Valid @RequestBody 
    Utilisateur user) {
    Utilisateur userAdded =  userRepository.save(user);
    if (userAdded == null)
        return ResponseEntity.noContent().build();
    
    URI location = ServletUriComponentsBuilder
                    .fromCurrentRequest()
                    .path("/{id}")
                    .buildAndExpand(userAdded.getId())
                    .toUri(); 

    return ResponseEntity.created(location).build(); 
 
      }

Я слежу за курсом Springboot на openclassrooms, и я применил то же самое, за исключением того, что ввел Crudrepository в свой код

вот описание ошибки:  введите описание изображения здесь


person Ramses Kouam    schedule 25.07.2020    source источник
comment
Есть ли у вас @Repository аннотация в вашем классе репозитория?   -  person Seldo97    schedule 26.07.2020
comment
Аннотации @Repository не требуется, поскольку он уже расширяет CrudRepository. Не могли бы вы предоставить нам дополнительную информацию? Как выглядит трассировка стека при возникновении ошибки. Есть ли у вас ручная настройка репозиториев или все настроено из коробки. Можете ли вы предоставить нам рабочий пример ошибки? (Github). Чтобы найти проблему, вам потребуется много времени, чтобы обыскать весь курс.   -  person Norbert Dopjera    schedule 26.07.2020
comment
@NorbertDopjera прав, ничего не изменилось   -  person Ramses Kouam    schedule 26.07.2020
comment
я добавляю описание ошибки, хпэ поможет вам   -  person Ramses Kouam    schedule 26.07.2020
comment
Отвечает ли это на ваш вопрос? Spring boot 2.2.0 Проблема с запуском Spring HateOas   -  person Norbert Dopjera    schedule 26.07.2020


Ответы (1)


Из вашей трассировки стека мы видим, что контекст Spring не знает, какой bean должен быть введен при запросе PluginRegistry, так как я не знаю, что такое реестр плагинов, я не могу подробно рассказать, но relProviderPluginRegistry и entityLinksPluginRegistry являются кандидатами bean для этой инъекции, и Spring не может решить какой использовать. Я обнаружил, что эта проблема известна и существует несколько способов ее решения. См. Следующую проблему:
https://github.com/spring-projects/spring-hateoas/issues/1094

Просто обратите внимание: я не знаю, насколько хороши эти лекции, но вы никогда не должны открывать свои репозитории напрямую API (RestController), особенно когда вы работаете с JPA + Hibernate. Функциональность репозиториев должна быть скрыта за пользовательским API (классы @Service или @Component, предоставляющие функциональные возможности репозиториев, добавляющие проверки, ограничивающие доступ и т. Д.). Обычно это делается потому, что изменяемая операция в классе Model, который используется сеансом Hibernate, также может транслироваться в операцию с базой данных. Следует создать фасад, на котором классы вашей модели, используемые репозиториями, отображаются в классы модели фасада (те же функции, но не в режиме гибернации - аннотации @Table @Entity здесь не используются). Дополнительную информацию об этой проблеме вы найдете в Интернете.

person Norbert Dopjera    schedule 26.07.2020