Problema com @ElementCollection

Boa Noite amigos,

Estou tentando colocar o spring security pra rodar e para isso uso uma classe Usuario e estou querendo fazer um @JoinTable para uma tabela usuario_permissao. A ideia é que possa ter varias permissões como: ROLE_USUARIO e ROLE_ADMINISTRADOR para o mesmo usuario.
Estou usando o Hibernate e seguindo um exemplo usando a annotation @ElementCollection no NetBeans 7.1.2 somente diz que: cannot find symbol, o codigo da classe usuario é:

[code] /
package financeiro.usuario;
import java.io.
;
import java.util.;
import javax.persistence.
;

@Entity
public class Usuario implements Serializable{
@Id
@GeneratedValue
private Integer codigo;
private String nome;
private String email;

@org.hibernate.annotations.NaturalId
private String login;
private String senha;
@Temporal(javax.persistence.TemporalType.DATE)
private Date nascimento;
private String celular;
private String idioma;
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 permissao;
[/code]

Alguém teria uma sugestão melhor para fazer essa persistencia? Ou saberia me dizer o que esta faltando para o codigo entender o @ElementCollection já que pelo que vi na internet ele faz parte de javax.persistence

abraços.

Qual o erro completo?

Cara, eu olhei na internet aqui e achei exemplo diferente: http://wiki.eclipse.org/EclipseLink/Examples/JPA/2.0/ElementCollections .

Nesse e em outros exemplos ele usa @CollectionTable ao invés de JoinTable.

Até onde eu me lembro JoinTable é apenas para ManyToMany e OneToMany unidirecional.

Outros exemplos: http://wiki.eclipse.org/EclipseLink/Examples/JPA/2.0/ElementCollections
http://mdshannan1.blogspot.com.br/2010/09/jpa-2-new-feature-elementcollection.html

Olá jakefrog ,

Então, no netbeans ele não identifica essa annotations e quando mando executar, o tomcat mostra a seguinte mensagem de erro:

GRAVE: Error filterStart 08/06/2012 22:47:24 org.apache.catalina.core.StandardContext startInternal GRAVE: Context [/Financeiro] startup failed due to previous errors Criação inicial do objeto SessionFactory falhou. Erro: org.hibernate.MappingException: Could not determine type for: java.util.Set, for columns: [org.hibernate.mapping.Column(permissao)]

É cara, se ele não reconhece as annotations tem alguma coisa errada.

Veja se a biblioteca sendo utilizada está correta, se é a 2.

Obrigado amigo, vou da uma olhada e rever a versão, vou tentar também montar o mesmo codigo pelo eclipse para ver se é algum outro problema.

abraços.

Olá amigo,

Também estou estudando o mesmo livro e me esbarrei neste problema.
Não sei se já resolveu (provavelmente sim), mas de qualquer forma,
basta fazer a seguinte importação:

import javax.persistence.*;

O eclipse não oferece a opção de importar a classe correta com o código
escrito daquela forma. Então, importe tudo e o problema se resolve!

Espero ter ajudado a alguém,

Abraços,
Fábio

Caro fabreder,

Eu também estou lendo o mesmo livro.Fiz o que você recomendou e dá o mesmo problema.

Alguma solução a mais pode ser aplicada?

Prezado gnucleber, sei que já se passaram alguns anos de sua dúvida, mas(suposição minha) ao ler o mesmo livro e fazer o mesmo exemplo que você, me deparei com o mesmo problema. Não sei qual IDE você está utilizando, eu estou usando o netbeans e resolvi esse problema ao importar o JPA(2.0) para o projeto!