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

9 respostas
M

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:

9 Respostas

A

cara,

troca seu @elementCollection por @manytomany

t+

M

alissonvla:
cara,

troca seu @elementCollection por @manytomany

t+


Olá Alisson,

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

A

coloca assim, sem target

@ManyToMany(fetch = FetchType.LAZY)
W

Um exemplo de um simples relacionamento

@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
essa é a classe Pessoa
@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;

espero ter ajudado!!!

H

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á.

A

pessoal,

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

T+

M

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

A

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.

F

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?

Criado 27 de dezembro de 2011
Ultima resposta 15 de jun. de 2013
Respostas 9
Participantes 7