Olá Desenvolvedores, estou enfrentando um problema no desenvolvimento de um sistema aqui e as diversas soluções que encontrei na internet não sanaram minha dúvida.
A questão é relacionada a Enums, especificamente uma lista de Enums, List<Enum>
. Andei lendo que não é necessário gravar Enums no banco pelo fato de ser constantes. Porém eis minha dúvida, em determinado momento o usuário informará quais valores da List<Enum>
ele quer vincular a determinado objeto, e futuramente terei que recuperar esses valores para apresenta-los em um relatório.
Adentrando no contexto da minha aplicação (ambiente agrícola), existe as inspeções de pragas (vistorias nos pomares afim de verificar a existência de pragas), com isso existe uma determinada praga que apresenta alguns estágios de desenvolvimento, são eles: OVO, LARVA, NINFA e ADULTO. Estes quatro valores constituem minha Enum, e possuo uma entidade InspecaoPraga
que possui como atributo uma lista desses enum, sendo que o usuário informará a existência de um, alguns ou todos os estágios.
Atualmente, meu código está assim:
Enum:
public enum EstagioPraga {
OVO("O"),
LARVA("L"),
NINFA("N"),
ADULTA("A");
private final String sigla;
EstagioPraga(final String sigla) {
this.sigla = sigla;
}
public String getSigla() {
return sigla;
}
}
Entidade:
public class InspecaoPraga implements Serializable {
...
@ElementCollection(fetch = FetchType.EAGER, targetClass = EstagioPraga.class)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "estagioPraga_inspecaoPraga")
@Column(name = "estagios_praga")
private Collection<EstagioPraga> estagiosEncontrados;
.....
}
Minha intenção é criar um <p:selectManyCheckbox>
e exibir os valores da Enum, deixando o usuário escolher quais valores encontrou, depois preciso exibir isso em um relatório, ou seja, preciso recuperar os valores selecionados no <p:selectManyCheckbox>
.
Porém, não consigo, com as annotations utilizadas o hibernate cria uma tabela no banco com o nome especificado na anotação @CollectionTable
mas ao persistir um objeto InspecaoPraga
a tabela criada não é populada e consequentemente não consigo recuperar os valores da lista para aquele objeto.
Alguém poderia me auxiliar em como recuperar esses valores ? E além disso esclarecer se essa List<Enum>
deve ou não ser persistida no banco ??
Grato, desde já!