Criação de Tabela com Hibernate

9 respostas
joaolenosi

Bom dia, estou lendo o livro programação java web, atualmente estou no capitulo 6.
Porem estou com um problema, na criação da tabela atraves de anotações.

O trecho do livro diz o seguinte.:

aqui é o trecho do mapeamento na classe Usuario

@ElementCollection(targetClass = String.class) @JoinTable( name="usuario_permissao", uniqueConstraints = {@UniqueConstraint(columnNames = {"usuario","permissao"})}, joinColumns = @JoinColumn(name = "usuario")) @Column(name = "permissao", length=50)

O problema é que essa tabela não foi criada. Alguem sabe como posso resolver esse problema ?

9 Respostas

joaolenosi

O será que o jeito vai ser cria-la no braço ?
O problema é que eu não tenho certeza se o campo usuario é chave primaria e auto increment!!!

create table usuario_permissao (usuario int(11) not null auto_increment primary key, permissao varchar(255) not null)
augustovieira

ta certo o nome do banco na qual você está criando a tabela? ele existe? a principio não vejo nenhum erro

joaolenosi

Em nenhum momento no mapeamento acima eu especifico o banco, mas o banco existe siim !!

:idea: :idea: :idea:

augustovieira

Por isso cara! Não sei se você criou alguma classe de coneção, nessa classe você especifica o banco que está utilizando! O hibernate te possibilita isso, você não precisa criar as colunas, e etc! Apenas o banco. Você deve criar um connectionFactory na qual vai fazer a coneção com o banco. Sem ela o hibernate não saberá onde criar as tabelas e etc, me entende?

No guj acho que esses artigos podem te ajudar:

http://www.guj.com.br/articles/125

http://www.guj.com.br/articles/182

joaolenosi

augustovieira, eu acho que tinha me expressado mal.
Eu ja tenho tudo configurado na minha aplicação, o problema é que ele não tá conseguindo criar essa tabela, com esse mapeamento…

joaolenosi

:idea:

joaolenosi

alguem ajuda por favor

joaolenosi

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.
O problema é que ele não tá criando essa tabela

@Entity
public class Usuario implements Serializable {

    private static final long serialVersionUID = -7390392097656238443L;
    
    @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<String> permissao = new HashSet<String>();
//getter e setter
//equals e hashcode
E

Bom dia.
Da uma olhada neste exemplo de implementação.
http://javafaces.wordpress.com/2011/01/03/spring-security-hibernate/
http://www.guj.com.br/java/276506-jsf2–primefaces–hibernate–spring-security-3-resolvido
Utilizo Spring Security e lembro que deu um pouco de trabalho para aprende, mas ajuda muito na parte de desenvolvimento devido ao padrões de criação de regra.
Na minha classe usuário.

@JoinTable(name = "usuario_permissao", joinColumns = @JoinColumn(name = "id_usuario"), inverseJoinColumns = @JoinColumn(name = "id_permissao")) private List<permissao> listaPermissao;
O hibernate cria a tabela “usuario_permissao” normalmente.
Espero que ajude.

Criado 11 de julho de 2012
Ultima resposta 13 de jul. de 2012
Respostas 9
Participantes 3