Fórum Erro com Hibernate + SGDB PostGreSQL 9.0 #388617

16/10/2010

0

Bom tenho uma tabela Mapeada da seguinte forma    
 
@Entity()
@Table(name = "public.vendas")
public class Vendas implements java.io.Serializable {
    @Id
    private Integer id;
    
    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "id_usuario")
    private Usuario usuario;
    @Column(name = "dataVenda")
    @Temporal(TemporalType.DATE)
    private Date dataDaVenda;
    @OneToMany(mappedBy="venda")
    private List <VendaItens> itens;
    public Vendas() {
    }
 
  /** Gets and Setters  e Hash Code e Equals criados só foram omitidos para economizar */ 
}
 
  O Hibernate Gera essa SQL , que apresenta um erro envolvendo o Campo Data.   Eu peguei essa SQL Gerada e no PostGreManager percebi que o campo Data precisa ta com Aspas dessa forma.  vendas0_."dataVenda" as dataVenda2_1_ . Assim a SQL Funciona.   Como fazer para o Hibernate Gerar dessa forma acima ? Obs ( Se eu retirar o atributo Data da minha classe o Hibernate funciona normalmente ).   Existe alguma outra coisa que preciso fazer no caso do PostGre pois no Mysql esse código Funciona normal.      
    select
        vendas0_.id as id2_1_,
        vendas0_.dataVenda as dataVenda2_1_,
        vendas0_.id_usuario as id3_2_1_,
        usuario1_.id as id0_0_,
        usuario1_.nome as nome0_0_
    from
        public.vendas vendas0_
    left outer join
        public.usuario usuario1_
            on vendas0_.id_usuario=usuario1_.id
    where
        vendas0_.id=?     Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not load an entity: [hibernate.Vendas#1]
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
        at org.hibernate.loader.Loader.loadEntity(Loader.java:1895)
        at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:71)
        at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:65)
        at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3072)
        at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:434)
        at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:415)
        at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:165)
        at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:223)
        at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:126)
        at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:905)
        at org.hibernate.impl.SessionImpl.get(SessionImpl.java:842)
        at org.hibernate.impl.SessionImpl.get(SessionImpl.java:835)
        at hibernate.MainVendas.main(MainVendas.java:54)
Caused by: org.postgresql.util.PSQLException: ERROR: column vendas0_.datavenda does not exist
  Posição: 31      
Rogerio Moraleida

Rogerio Moraleida

Responder

Posts

16/10/2010

Robson Teixeira

Olá amigo

 verifique como vc está gerendo a query pois pode ser isso ou teste colocando a anotação @Column no atributo id pois se faltar anotação ou anotou errado as querys dificilmente funcionam.

ate+.
Responder

Gostei + 0

16/10/2010

Rogerio Moraleida

Olá amigo

 verifique como vc está gerendo a query pois pode ser isso ou teste colocando a anotação @Column no atributo id pois se faltar anotação ou anotou errado as querys dificilmente funcionam.

ate+.
Opa blz ? Amigo o erro esta na Data pois se eu retirar o atributo Date o Hibernate funciona sem erro.     Pegando a SQL Gerada pelo Hibernate  eu coloquei ela para funcionar  mas foi preciso colocar aspas no field da data   assim   database."data" as data  só assim funcionou , nucna vi isso só no postgre  que deu isso.
Responder

Gostei + 0

16/10/2010

Davi Costa

Rogério,
testa na tua anotação trocar por:

@Temporal(TemporalType.TIMESTAMP)

Depois manda o feedBack se funcionou.
Att Davi
Responder

Gostei + 0

16/10/2010

Rogerio Moraleida

Rogério,
testa na tua anotação trocar por:

@Temporal(TemporalType.TIMESTAMP)

Depois manda o feedBack se funcionou.
Att Davi
Responder

Gostei + 0

16/10/2010

Rogerio Moraleida

Rogério,
testa na tua anotação trocar por:

@Temporal(TemporalType.TIMESTAMP)

Depois manda o feedBack se funcionou.
Att Davi
  Ja testei e nao funcionou....   O Pior é que se eu trocar o driver pro mysql funciona sem alteração nenhuma ...   Simplesmente o campo data tem q tar dentro de " " pra funcionar e o hibernate gera sem. Isso no PostGre      
Responder

Gostei + 0

17/10/2010

Davi Costa

Certo,
esse banco foi o hibernate que gerou?
Tenta gerar esse banco com outro nome e compara c o banco que vc já tem.
Realmente o que vc está relatando está muito estranho, por isso tenta fazer o hibernate gerar esse
campo e compara as tabelas, para ver se tem diferença.

Att Davi
Responder

Gostei + 0

17/10/2010

Robson Teixeira

mande o hibernate gerar as tabelas e teste pois também acho que ta estranho d+
Responder

Gostei + 0

17/10/2010

Davi Costa

Desculpe se me expressei mal,
é pq o hibernate tem uma opção que podemos configurar para quando a aplicação subir ele gera o banco.
Daí falei para vc usar esse recurso com um nome de banco diferente para você poder comparar esse campo
que está dando problema no postgres. Só isso para ver se o hibernate cria essa coluna da mesma forma como está esse banco que já existe.
Se tiver alguma dúvida para usar esse recurso pesquisa por;
<property name="hibernate.hbm2ddl.auto" value="create" />
Espero ter sido claro agora.
Att Davi
Responder

Gostei + 0

19/10/2010

Dyego Carmo

Tentou atualizar o driver JDBC do postgresql ? Ou atualizar seu hibernate para a 3.6 ?

Responder

Gostei + 0

19/10/2010

Rogerio Moraleida

Tentou atualizar o driver JDBC do postgresql ? Ou atualizar seu hibernate para a 3.6 ?

Sim eu baixei o driver mais novo e o hibernate mais novo tambem.     Creio que o problema seja do driver pois mudei o banco para MYSQL e deu tudo certo.    Sem mudar uma linha.   Esquesito né rss ...  o foda é que eu precisava de usar o postgree.   Ah você ta de parabens as AULAS SÃO MUTIO BOAS E VC TEM UMA DIDATICA OTIMA.
Responder

Gostei + 0

20/10/2010

Rogerio Moraleida

Galera descobri o erro.   E o erro e no PostGre   eu criei o campo dataVenda  com o V maiusculo....     Não sei pq mais somente no postgre deu biziu nas SQL...     Mudei para minusculo e o erro não existe mais.   SINISTRO.
Responder

Gostei + 0

20/10/2010

Davi Costa

A alguns post te notifiquei para deixar o hibernate gerar o banco, já teria descoberto,
ou o seu banco já havia sido gerado pelo hibernate de forma errada?

Mas de qualquer forma muito bom c ter solucionado seu problema. :)

Att Davi
Responder

Gostei + 0

20/10/2010

Rogerio Moraleida

A alguns post te notifiquei para deixar o hibernate gerar o banco, já teria descoberto,
ou o seu banco já havia sido gerado pelo hibernate de forma errada?

Mas de qualquer forma muito bom c ter solucionado seu problema. :)

Att Davi
Então eu tinha mandado o hibernate gerar e tambem não tinha resolvido pois meu atributo tambem estava  com a segunda palavra iniciada em maiuscula .   Exemplo  dataNascimento.. e pelo q constei o postgre tem uns pau em relação aos nomes... tem qpadronizar tudo minusculo que fica beleza.
Responder

Gostei + 0

20/10/2010

Davi Costa

Hmmm..

poh cara bom saber então, realmente não utilizei ainda essa versão do postgres,
então será necessário sempre passar o parâmetro name dentro de @Column.
Ex.:
@Column(name="datanascimento")


Cara faz só mais um favorzão p todos da comunidade testa com:

@Column(name="data_nascimento")

Para ver também se continuaria esse problema.
De ante mã grato :) !

Att Davi
Responder

Gostei + 0

20/10/2010

Rogerio Moraleida

Hmmm..

poh cara bom saber então, realmente não utilizei ainda essa versão do postgres,
então será necessário sempre passar o parâmetro name dentro de @Column.
Ex.:
@Column(name="datanascimento")


Cara faz só mais um favorzão p todos da comunidade testa com:

@Column(name="data_nascimento")

Para ver também se continuaria esse problema.
De ante mã grato :) !

Att Davi
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar