Hello, I'm implementing a DAO and doing some testing, I'm having some problems with enums. When running the test class the enum Size returns null, but in the database I have filled records correctly.
Test class:
package br.com.caelum.jdbc.teste;
import java.util.List;
import br.com.caelum.jdbc.dao.ContatoDAO;
import br.com.caelum.jdbc.modelo.Contato;
public class TestaLista {
public static void main(String[] args) {
ContatoDAO contatoDAO = new ContatoDAO();
List<Contato> contatos = contatoDAO.getLista();
for (Contato contato : contatos) {
System.out.println("Nome: " + contato.getNome());
System.out.println("Email: " + contato.getEmail());
System.out.println("Endereço: " + contato.getEndereco());
System.out.println("Data de Nascimento: " + contato.getDataNascimento() + "\n");
System.out.println("Tamanho: " + contato.getTamanho());
}
}
}
This is the Contact class, my main object and has an equivalent table in the database:
import java.time.LocalDate;
import java.time.LocalTime;
import br.com.caelum.jdbc.dao.Tamanho;
public class Contato {
private Long id;
private String nome;
private String email;
private String endereco;
private LocalDate dataNascimento;
private LocalTime horaAgendada;
private Tamanho tamanho;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public LocalDate getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(LocalDate dataNascimento) {
this.dataNascimento = dataNascimento;
}
public LocalTime getHoraAgendada() {
return horaAgendada;
}
public void setHoraAgendada(LocalTime horaAgendada) {
this.horaAgendada = horaAgendada;
}
public Tamanho getTamanho() {
return tamanho;
}
public void setTamanho(Tamanho tamanho) {
this.tamanho = tamanho;
}
}
My Enum Size (I'm just testing the bank's returns, so I've done an enum just to test). I added method to Size to try to solve, because without it I could not even return, just the error below:
Exception in thread "main" java.lang.NullPointerException: Name is null at java.lang.Enum.valueOf (Enum.java:236) at br.com.caelum.jdbc.dao.Tamanho.valueOf (Size.java:1) at br.com.caelum.jdbc.dao.ContatoDAO.getList (ContactDAO.java:61) at br.com.caelum.jdbc.teste.TestaLista.main (TestaLista.java:17)
package br.com.caelum.jdbc.dao;
public enum Tamanho {
xSmall("x-small"),
small("small"),
medium("medium"),
large("large"),
xLarge("x-large'");
private String tamanho;
Tamanho(final String tamanho){
this.tamanho = tamanho;
}
public String getTamanho() {
return tamanho;
}
public void setTamanho(String tamanho) {
this.tamanho= tamanho;
}
@Override
public String toString() {
return tamanho;
}
public static Tamanho toTamanho(String value) {
for (Tamanho tamanho : values()) {
if (tamanho.equals(value)) {
return tamanho;
}
}
return null;
}
}
And this is the result of running the TestList class:
Nome: teste
Email: [email protected]
Endereço: Rua teste testeira
Data de Nascimento: 2018-02-21
Tamanho: null
Nome: teste
Email: [email protected]
Endereço: Rua teste testeira
Data de Nascimento: 2018-02-21
Tamanho: null
Nome: teste
Email: [email protected]
Endereço: Rua teste testeira
Data de Nascimento: 2018-02-21
Tamanho: null
Nome: teste
Email: [email protected]
Endereço: Rua teste testeira
Data de Nascimento: 2018-02-23
Tamanho: null
Nome: teste
Email: [email protected]
Endereço: Rua teste testeira
Data de Nascimento: 2018-02-23
Tamanho: null
A print of the table in the database: