Ajuda Hibernate plzz!

12 respostas
L

Boa tarde galera, estou com uma duvida acho q eh simples…
tipo tenho no meu hibernate.cfg.xml um mapeamento de uma entidade
<mapping class"br.com.teste.Teste" /> , ateh ai tudo blz, soh q tipo no banco essa entidade tem uma coluna chamada DATA_CADASTRO e no meu EntityBean deixei dataCadastro para ficar nos padroes…
soh que deixando assim ele nao encontra a coluna dataCadastro pq o nome no banco eh DATA_CADASTRO!
como eu especifico o nome da tabela no mapeamento?
por exemplo no ejb seria soh colocar em cima da variavel
@Colunm(name = “DATA_CADASTRO”) , soh q no hibernate isso nao funciona!

Muito obrigado pela atenção!!

Abs!

12 Respostas

Anderson_Leite

É isso mesmo, o erro deve ser outro, que msg aparece no log ?

@Column(name = “DATA_CADASTRO”) ta correto pra mapear a coluna

L

Boa tarde Anderson,
entao aparece assim:

Column not found: DATACADASTRO in statement [insert into USUARIOS (creditos, dataCadastro, dataUltimoAcesso, foto, login, nome, senha, idUsuario) values (?, ?, ?, ?, ?, ?, ?, ?)]

realmente nao existe no banco coluna DATACADASTRO e sim DATA_CADASTRO …isso que nao consigo, avisar que no banco a coluna se chama DATA_CADASTRO …

Anderson_Leite

por desencargo…você tem anotado na sua classe :

@Entity @Table(name = "NOME_DA_TABELA")

?

L

tenho sim, segue a classe completa:

package com.consensus.bean.entity;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import com.consensus.util.Format;

@Entity
@Table(name = "USUARIOS")
@SequenceGenerator(name = "seq", sequenceName = "S_USUARIOS")
@NamedQueries( { @NamedQuery(name = "checkLogin", query = "select c from UsuarioEntity c where c.senha = :senha and c.login = :login") })
public class UsuarioEntity implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7891796436766731118L;

	private Long idUsuario;

	@Column(name = "APELIDO")
	private String login;

	@Column(name = "CREDITOS")
	private String creditos;

	@Column(name = "DATA_CADASTRO")
	private Date dataCadastro;

	@Column(name = "DATA_ULTIMO_ACESSO")
	private Date dataUltimoAcesso;

	@Lob
	@Column(name = "FOTO")
	private byte[] foto;

	@Column(name = "NOME")
	private String nome;

	@Column(name = "SENHA")
	private String senha;

	private EnderecoEntity endereco;

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq")
	public Long getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(Long idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = Format.getNome(login);
	}

	public String getCreditos() {
		return creditos;
	}

	public void setCreditos(String creditos) {
		this.creditos = Format.getNome(creditos);
	}

	public Date getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public Date getDataUltimoAcesso() {
		return dataUltimoAcesso;
	}

	public void setDataUltimoAcesso(Date dataUltimoAcesso) {
		this.dataUltimoAcesso = dataUltimoAcesso;
	}

	public byte[] getFoto() {
		return foto;
	}

	public void setFoto(byte[] foto) {
		this.foto = foto;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = Format.getNome(nome);
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "usuario")
	public EnderecoEntity getEndereco() {
		return endereco;
	}

	public void setEndereco(EnderecoEntity endereco) {
		this.endereco = endereco;
	}

}
L

o que deu pra perceber eh que vc mapeou o campo assim:

@Colunm(name = “DATA_CADASTRO”)

e no banco esta ‘datacadastro’ sem o ‘_’

ps: o mesmo acontece pro campo dataUltimoAcesso…

[]s

L

eh ao contrario, no banco o nome da coluna eh DATA_CADASTRO , mas na hora de mapear a classe o hibernate entende que o nome da coluna eh o mesmo da variavel ai fica dataCadastro …

:frowning:

L

No banco ta como?

quando vc utiliza a tag colunm eh pra por o nome igual esta no banco…
ex:
@Colunm(name = “DATA_CADASTRO”)

o nome da coluna no banco deve estar data_cadastro…

L

fiz exatamente assim…

@Colunm(name = “DATA_CADASTRO”)
e no banco esta DATA_CADASTRO tbm…

soh q qnd executo o insert ele fala
Column not found: DATACADASTRO in statement [insert into USUARIOS (creditos, dataCadastro, dataUltimoAcesso, foto, login, nome, senha, idUsuario) values (?, ?, ?, ?, ?, ?, ?, ?)]

L

cara… tem alguma coisa errada… por um acaso vc nao tem class perdido nao?
nunca tive problema assim…
ele nao ta pegando DATA_CADASTRO…

vc nao fez antes com datacadastro e depois mudou?
apaga a pasta build la e recompila tudo…

L

estou usando tomcat e hibernate soh…ja apaguei tdo e crei de nvoo e continua o erro…
eh alguma coisa q tem q por no meu hibernate.cfg.xml
segue ele:

<!DOCTYPE hibernate-configuration PUBLIC
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
	<session-factory>
		<!--  
		<property name="hibernate.connection.url">
			jdbc:mysql://localhost/teste
		</property>
		-->
		<property name="hibernate.connection.url">
			jdbc:hsqldb:hsql://localhost/consensus
		</property>

		<!--  
			<property name="hibernate.connection.driver_class">
			com.mysql.jdbc.Driver
		</property>
		-->
		<property name="hibernate.connection.driver_class">
			org.hsqldb.jdbcDriver
		</property>

		<!-- <property name="hibernate.dialect">
			org.hibernate.dialect.MySQLDialect
		</property>
		-->
		<property name="hibernate.dialect">
			org.hibernate.dialect.HSQLDialect
		</property>
		<property name="hibernate.connection.username">sa</property>
		<property name="hibernate.connection.password"></property>

		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>

		<property name="hibernate.c3p0.min_size">5</property>
		<property name="hibernate.c3p0.max_size">20</property>
		<property name="hibernate.c3p0.timeout">180</property>
		<property name="hibernate.c3p0.idle_test_period">100</property>

		<property name="hibernate.cache.provider_class">
			org.hibernate.cache.EhCacheProvider
			</property>
		
		<mapping class="com.consensus.bean.entity.EnderecoEntity" />
		<mapping class="com.consensus.bean.entity.MunicipioEntity" />
		<mapping class="com.consensus.bean.entity.PaisEntity" />
		<mapping class="com.consensus.bean.entity.UfEntity" />
		<mapping class="com.consensus.bean.entity.UsuarioEntity" />

	</session-factory>
</hibernate-configuration>

por eu usar esse <mapping class ele mapeia a entidade exatamente como esta o nome dos atributos…

L

não tem jeito msm? alguemmm!

help-me plzz!
n quero ir pro toplink :frowning: rsrs!

L

um humilde up ai pra n cair no esquecimento…

helppp!!!

Valeu!!

Criado 3 de setembro de 2008
Ultima resposta 5 de set. de 2008
Respostas 12
Participantes 3