Erro ao criar usuário - Hibernate

Estou obtendo o seguinte erro ao tentar salvar um usuário utilizando hibernate:

java.lang.IllegalArgumentException: Can not set java.lang.String field com.example.apiadote.model.entity.Usuario.email to com.example.apiadote.model.entity.Usuario.

Segue o código.

entity

    @Component
    @Entity
    @Table(name="usuario")
    public class Usuario {

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id")
        private Long id;

        @Column(name="email")
        private String email;

        @Column(name="senha")
        private String senha;

        public static UsuarioBuilder builder() {
            return new UsuarioBuilder();
        }

        public Usuario() {
        }

        public Usuario(Long id, String email, String senha) {
            this.id = id;
            this.email = email;
            this.senha = senha;

        }


        public Long getId() {
            return id;
        }

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

        public String getEmail() {
            return email;
        }

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

        public String getSenha() {
            return senha;
        }

        public void setSenha(String senha) {
            this.senha = senha;
        }


    }

UsuarioDAO

    @Repository
    public class UsuarioDAOImpl implements UsuarioDAO {

         @Autowired
         Usuario usuario;

        @Override
        public Usuario createUsuario(Usuario usuario){

            Session session = HibernateUtil.getSessionFactory().openSession();
            session.beginTransaction();

            session.save(usuario);
            session.getTransaction().commit();
            session.close();
            System.out.println(usuario);

            return usuario;
        }

Service

    @Override
        public Usuario createUsuario(Usuario usuario) {



           usuario.setEmail(usuario.getEmail());
           usuario.setSenha(usuario.getSenha());

           usuarioDAO.createUsuario(usuario);

           return usuario;
        }
    ```

    Controller

    ```
     @PostMapping
        @ResponseStatus(HttpStatus.CREATED)
        public ResponseEntity salvar (@RequestBody UsuarioDTO dto ) {

            Usuario usuario = Usuario.builder()
                             .email(dto.getEmail())
                             .senha(dto.getSenha()).build();

            try{
                Usuario usuarioSalvo = usuarioService.createUsuario(usuario);
                return new ResponseEntity(usuarioSalvo, HttpStatus.CREATED);
            }catch (RegraNegocioException e ) {
                return ResponseEntity.badRequest().body(e.getMessage());
            }
        }

Porquê anotar sua entidade como component?

Qual a necessidade de injetar sua entidade?

Você está recuperando dados e setando novamente na mesma instância que recebeu por parâmetro, qual era seu intuíto com isso?

Então, deixando só o @Entity, na hora que eu executo a aplicação o spring me lança o erro que falta um bean do tipo Entity. Aí quando coloco o @component ele roda. Saberia o pq?

A parte de setar novamente foi mais pra testar mesmo. Pq tentei de outras formas e obtive o mesmo erro.

Ele reclama pq tu injeta ele na classe UsuarioDAOImpl com a anotação @Autowired e para isso ela precisa ser reconhecida como um bean Spring, por isso quando você anota a entidade com @Component funciona, mas essa injeção é desnecessária, tu pode remover ela e remover também o @Component da entidade.

Fiz as alterações porém obtenho o mesmo erro ao tentar cadastrar o usuário.

java.lang.IllegalArgumentException: Can not set java.lang.String field com.example.apiadote.model.entity.Usuario.email to com.example.apiadote.model.entity.Usuario