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 ?
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)
ta certo o nome do banco na qual você está criando a tabela? ele existe? a principio não vejo nenhum erro
Em nenhum momento no mapeamento acima eu especifico o banco, mas o banco existe siim !!
:idea: :idea: :idea:
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
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…
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
[code]@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
[/code]
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.