Salvar lista de enum JPA

2 respostas
vi-gb

Tenho uma classe e ela possui uma lista de elementos do meu enum, preciso salvar isso em banco mas nao estou conseguindo

Classe

@Entity
@Table(name="empregado")
public class Empregado {

	@Id ...
	private int id;
	
	//demais campos mapeados ...

	@Enumerated(EnumType.ORDINAL)
	@ManyToMany
	@JoinTable(name="qualidades", 
			joinColumns = {@JoinColumn(name="ID_Emp", referencedColumnName="ID"), 
			@JoinColumn(name="quali")}, 
			uniqueConstraints = @UniqueConstraint(columnNames = {
					"ID_Emp", "quali"}))
	private List<Qualidade> qualidades;

	//gets and sets
}

//Enum
public enum Qualidade {
	PRESTATIVO,
	EDUCADO,
	ESFORCADO;
}


//Erro
The type [interface java.util.List] for the attribute [qualidades] on the entity class [class projeto.Empregado] is not a valid type for a serialized mapping. The attribute type must implement the Serializable interface.

No persistence declarei apenas a classe e sem a lista ela funciona.

Por favor me ajudem!

2 Respostas

Marky.Vasconcelos

Bem… voce nao pode nem precisa gravar enumerações no banco por que são constantes.

Mas se seu objeto possui um atributo do tipo enumerado voce pode anotar com @Enumerated que no banco ele salva apenas o numero ordinal() da enumeração para criar o objeto novamente.

vi-gb

Para ter um campo sim mas e para uma lista? como faço para salvar pois precisaria ser criada uma tabela para guardar a id do empregado e o ordinal do enum?
Vi que em JPA2.0 tem como mas nao posso trocar a versao agora. =[
http://jazzy.id.au/pebble/2008/03/24/jpa_2_0_new_features_part_1.html

Obrigada

No link http://wiki.eclipse.org/Introduction_to_Relational_Mappings_%28ELUG%29#Direct_Collection_Mapping
A Direct Collection Mapping parece ser o que eu quero mas nao estou conseguindo implementa-la.

Criado 5 de maio de 2010
Ultima resposta 5 de mai. de 2010
Respostas 2
Participantes 2