0
I am getting the following error while trying to save a user using 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.
Follows the code.
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;
}
}
User
@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());
}
}