Hibernate - MappingException: Could not determine type for: java.util.Set

Olás,

Estou tentando realizar o seguinte mapeamento, porém o Hibernate está lançando a seguinte exceção:

org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns: [org.hibernate.mapping.Column(permissao)]
@Entity
@Table(name = "USUARIO")
public class Usuario implements Serializable {

	private static final long serialVersionUID = 3648175213027874831L;

	@Id
	@GeneratedValue
	@Column(name = "ID_USUARIO")
	private long id;

	@Column(name = "LOGIN")
	@org.hibernate.annotations.NaturalId
	private String login;

	@Column(name = "SENHA")
	private String senha;

	@Column(name = "ATIVO")
	private boolean ativo;

	@ElementCollection(targetClass = String.class)
	@JoinTable(name = "USUARIO_PERMISSAO", uniqueConstraints = { @UniqueConstraint(columnNames = {
			"usuario", "permissao" }) }, joinColumns = @JoinColumn(name = "usuario"))
	@Column(name = "permissao", length = 50)
	private Set<String> permissao = new HashSet<String>(); // Lista que armazena as permissões do usuário.

        ....
        
        // getters e setters

Alguém poderia me explicar porquê?

Obrigado :wink:

cara,

troca seu @elementCollection por @manytomany

t+

[quote=alissonvla]cara,

troca seu @elementCollection por @manytomany

t+[/quote]
Olá Alisson,

Já havia tentando esta abordagem, mas tbém gera erro:

coloca assim, sem target

@ManyToMany(fetch = FetchType.LAZY)

Um exemplo de um simples relacionamento

[code]@Entity
@Table(name = “compra”)
public class Compra {

@Id
@GeneratedValue
private long id;

            //esta se relacionando com a classe Pessoa
            @ManyToOne
@JoinColumn(name = "pessoa_id")// e essa é a coluna do id da Pessoa
private Pessoa pessoa;

@ManyToOne
@JoinColumn(name = "produto_id")
private Produto produto;

@Column(name = "quantidade")
private int quantidade;

@Column(name = "preco_produto")
private double precoProduto;

@Column(name = "preco_total")
private double precoTotal;

@Temporal(TemporalType.DATE)
@Column(name = "data_compra")

//gets e sets [/code]

essa é a classe Pessoa

[code]@Entity
@Table(name = “pessoa”)
public class Pessoa {

@Id
@GeneratedValue
            //o relacionamento esta vindo para essa coluna
@Column(name = "pessoa_id")
private long id;

@Column(name = "nome")
private String nome;

@Temporal(TemporalType.DATE)
@Column(name = "data_nascimento")
private Date dataNascimento;

@Enumerated(EnumType.STRING)
@Column(name="sexo")
private TipoSexo sexo;

@NaturalId
@Column(name = "email")
private String email;

@Column(name = "senha")
private String senha;

@Column(name="estatus")
private int estatus;[/code]

espero ter ajudado!!!

Cara, eu to lendo um livro e nele não mostra como mapear uma lista de String.

Fiquei curioso para fazer isso funcionar.

Faz o seguinte, deixa o @ManyToMany e retire a anotação @Column(name = “permissao”, length = 50).

Veja como ficará.

pessoal,

segue ai um link de como usar @ElementCollection, http://mdshannan1.blogspot.com/2010/09/jpa-2-new-feature-elementcollection.html

T+

Desculpe reabrir o tópico, mas alguém chegou a solução???

Estou passando pelo mesmo problema, e todos os exemplos que foram apresentados não deram certo.

Alguém conseguiu???

Obrigado

Gente,

Estou lendo o mesmo livro e o autor fala que seria melhor para a aplicação acessar os dados de uma tabela com chaves estrangeira desta forma.
Também estou com o mesmo problema e se alguém puder colocar a solução estaria-mos agradecidos.

Também com o mesmo problema:

Getter of my class:

@Enumerated(EnumType.ORDINAL)
@ElementCollection
@JoinTable
@OrderColumn
public List getDiasSemana() {
return diasSemana;
}

Enum:

public enum DiaSemana {
DOMINGO, SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO;
}

Error:
Caused by: org.hibernate.MappingException: Could not determine type for: java.util.List, for columns: [org.hibernate.mapping.Column(diasSemana)]

Alguma ideia?