galera
to com dificultades em como fazer o mapeamento de uma classe minha aqui
eu tenho uma classe que tem apenas um atributo, que é um map, com uma chave String e um Enum como valor
classe 1:
@Embeddable
public class ListaDeSublistas implements Serializable {
@CollectionOfElements
private Map<String, SubLista> sublistas;
public ListaDeSublistas() {
sublistas = new HashMap<String, SubLista>();
}
public SubLista get(String sublista) {
return sublistas.get(sublista);
}
public void add(SubLista sublista) {
sublistas.put(sublista.toString(), sublista);
}
}
enum:
public enum SubLista implements Serializable {
DISQUETE_CONSULTA("Disquete Consulta FCC"),
LISTA_ALFA_COLEGIO("Lista alfa colégio"),
LISTA_ALFA_POSTO("Lista alfa posto"),
LISTA_CADASTRO("Lista de Cadastro (Alfa geral)"),
LISTA_PRESENCA("Lista de presenca com espaço para assinatura"),
LISTA_SALA_DUPLO_LINGUA("Lista de sala - fomato duplo (c/ mist. de língua)"),
LISTA_SALA_DUPLO_HORARIO("Lista de sala - formato duplo (com horário)"),
LISTA_SALA_SIMPLES("Lista de sala - formato simples"),
RELATORIO_INSCRICAO("Relatório com nº de inscrição e tipo de prova"),
RELATORIO_RESERVA_PROVAS("Relatório de reserva de provas");
private final String descricao;
private String especificacao;
SubLista(String descricao) {
this.descricao = descricao;
}
public String getEspecificacao() {
return especificacao;
}
public void setEspecificacao(String especificacao) {
this.especificacao = especificacao;
}
}
dei uma pesquisada, mas não estou descobrindo que anotações eu preciso pra esse map, na verdade nunca mapeei um Map antes
alguém pode me ajudar?
então cara
essa é uma das minhas dúvidas
eu nunca persisti um enum assim antes, só de um jeito + simples
segue a última classe do meu sistema
@Entity(name = "LISTAS_LISTA_CADASTRO")
public class ListaCadastro implements Serializable {
public enum TpProva {OBJETIVA, PRATICA, OUTRA};
@Id
private String spi;
@Enumerated(EnumType.STRING)
private TpProva tpProva;
private String dtCriacao;
private String dtNecessidade;
@Column(length=2000)
private String dsOutros;
@Column(length=2000)
private String observacao;
@Embedded
private ListaDeSublistas sublistas;
public ListaCadastro() {
sublistas = new ListaDeSublistas();
}
public void adicionarSublista(SubLista sublista) {
sublistas.add(sublista);
}
public String getSpi() {
return spi;
}
public void setSpi(String spi) {
this.spi = spi;
}
public TpProva getTpProva() {
return tpProva;
}
public void setTpProva(TpProva tpProva) {
this.tpProva = tpProva;
}
public String getDtCriacao() {
return dtCriacao;
}
public void setDtCriacao(String dtCriacao) {
this.dtCriacao = dtCriacao;
}
public String getDtNecessidade() {
return dtNecessidade;
}
public void setDtNecessidade(String dtNecessidade) {
this.dtNecessidade = dtNecessidade;
}
public String getDsOutros() {
return dsOutros;
}
public void setDsOutros(String dsOutros) {
this.dsOutros = dsOutros;
}
public String getObservacao() {
return observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
}
Nesse caso foi só usar um @Enumerated para o tpProva e tudo certo
Mas o meu enum SubLista tem variáveis de instância e talz
como eu faço com ele? preciso tratar ele com um entity ou o que?
Mas aí somente você, ou a pessoa responsável, para poder definir isso. Se o enum irá para o BD, ou se terá uma tabela específica para o Enum, ou se será por numeração. Enfim, diversas são as possibilidades, e isso impacta na anotação da classe.