Relação pai e filho, sendo que a tabela filho não existe no banco.[resolvido]

10 respostas
M

Boa noite, segue a entidade que cria uma tabela para fazer a relação dos dados:

@Entity
@Table(name= "usuario")
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;
	private Date nascimento;
	private String celular;
	private String idioma;
	private boolean ativo;
	
	//relação pai e filho
	//necessario para informar o tipo de dado da hashset.
	@ElementCollection(targetClass = String.class)
	@JoinTable(
			name="usuario_permissao",//tabela do lado muitos da relação OneToMany1
			uniqueConstraints = {@UniqueConstraint(columnNames = {"usuario", "permissao"})},//constroi um indice unico entre as colunas usuario e permissao
			joinColumns = @JoinColumn(name = "usuario"))//diz a qual coluna da tabela filho a tabela pai vai se ligar
	@Column(name = "permissao", length=50)
	private Set<String> permissao = new HashSet<String>();
	
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getLogin() {
		return login;
	}
	public void setLogin(String login) {
		this.login = login;
	}
	public String getSenha() {
		return senha;
	}
	public void setSenha(String senha) {
		this.senha = senha;
	}
	public Date getNascimento() {
		return nascimento;
	}
	public void setNascimento(Date nascimento) {
		this.nascimento = nascimento;
	}
	public String getCelular() {
		return celular;
	}
	public void setCelular(String celular) {
		this.celular = celular;
	}
	public String getIdioma() {
		return idioma;
	}
	public void setIdioma(String idioma) {
		this.idioma = idioma;
	}
	public boolean isAtivo() {
		return ativo;
	}
	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
	public Set<String> getPermissao() {
		return permissao;
	}
	public void setPermissao(Set<String> permissao) {
		this.permissao = permissao;
	}

Após o código acima recebo o seguinte erro:

exception

javax.servlet.ServletException: org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:48)

root cause

org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update
	org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92)
	org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:36)

root cause

java.sql.BatchUpdateException: Table 'financeiro.usuario_permissao' doesn't exist
	com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2054)
	com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1467)
	org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:36)

root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.usuario_permissao' doesn't exist
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.lang.reflect.Constructor.newInstance(Constructor.java:525)
	com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	com.mysql.jdbc.Util.getInstance(Util.java:386)
	com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1053)
	com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
	com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
	com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
	com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
	com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
	com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
	com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
	com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2006)
	com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1467)
	org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
	org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
	org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:183)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:375)
	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:137)
	financeiro.web.filter.ConexaoHibernateFilter.doFilter(ConexaoHibernateFilter.java:36)

10 Respostas

Hebert_Coelho

E qual o problema?

Ele não ta criando a tabela?

M

Exato ele não cria a tabela =|

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.usuario_permissao' doesn't exist
Hebert_Coelho

Mathe:
Exato ele não cria a tabela =|

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.usuario_permissao' doesn't exist

As outras ele criou? Como está sua configuração para criação de tabelas?

M

Hebert Coelho:
Mathe:
Exato ele não cria a tabela =|

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.usuario_permissao' doesn't exist

As outras ele criou? Como está sua configuração para criação de tabelas?

Fora essa só tenho mais uma tabela no banco que eu criei por sql no mysql mesmo, ai fiz a relação, mas essa eu não queria fazer no mysql só queria fazer por ai, por ela ser muito pequena.
Qual seria a configuração para criação ?

Hebert_Coelho

Mathe:
Hebert Coelho:
Mathe:
Exato ele não cria a tabela =|

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'financeiro.usuario_permissao' doesn't exist

As outras ele criou? Como está sua configuração para criação de tabelas?

Fora essa só tenho mais uma tabela no banco que eu criei por sql no mysql mesmo, ai fiz a relação, mas essa eu não queria fazer no mysql só queria fazer por ai, por ela ser muito pequena.
Qual seria a configuração para criação ?

Se você criou uma pelo banco, por que você não cria a outra? O.o

Mar que preguiça… -_-’’

Você ta usando persistence.xml? ou o arquivo de configuração do hibernate?

M

AUHASDUHSAD velho faz quase 2 dias que não paro de ler esse livro ele ta dizendo para min fazer assim e eu estou estudando por ele, ja é o terceiro tópico que vc ta me ajudando em menos de 1 dia.

estou usando o
context.xml para fazer a conexão com o banco e dps to pegando a conexão pelo hibernate.cfg.xml

usei o context.xml para poder usar a conexão no spring tmb.

Hebert_Coelho

Mathe:
AUHASDUHSAD velho faz quase 2 dias que não paro de ler esse livro ele ta dizendo para min fazer assim e eu estou estudando por ele, ja é o terceiro tópico que vc ta me ajudando em menos de 1 dia.

estou usando o
context.xml para fazer a conexão com o banco e dps to pegando a conexão pelo hibernate.cfg.xml

usei o context.xml para poder usar a conexão no spring tmb.

Na boa? Cuidado com esse livro então. ^^

Adicione a chave update no seu arquivo hibernate.cfb.xml.

M

DEU CERTO -

HAHA, vou tomar, mas namoral isso que pesquisei bastante antes de comprar --" nele também não tinha a linha

thread

ai tinha dado outro erro mas achei rapido na net.

Obrigado.

Hebert_Coelho

Mathe:

DEU CERTO -

HAHA, vou tomar, mas namoral isso que pesquisei bastante antes de comprar --" nele também não tinha a linha

thread

ai tinha dado outro erro mas achei rapido na net.

Obrigado.

Que bom.

Mar que rai de livro é esse?

M

Programação Java para a Web, eu sei todo mundo diz que é pra min baixa o código fonte, e i analizando, só que o código fonte ta pronto e não ta com as configurações passo a passo do livro. Além do mais se eu digitar e sei que vou ir entendendo melhor.

Criado 4 de dezembro de 2012
Ultima resposta 5 de dez. de 2012
Respostas 10
Participantes 2