Internal Exception: java.sql.SQLException: Invalid column name

709 views
Skip to first unread message

Slack

unread,
Sep 14, 2010, 4:15:20 PM9/14/10
to jav...@googlegroups.com
Boa tarde,

estou com um erro que nao consegui corrigir, por isso venho pedir ajuda aqui na lista...
Estou fazendo uma busca (EntityManager.createQuery) mas ele ta dando uma erro de coluna inválida. Mas essa coluna está correta tanto no Java como no Banco de Dados (SQL Server). tanto que quando eu colo exatamente a query abaixo no SQL Client ele roda direitinho e retorna exatamente o que quero.

Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Invalid column name 'Bairro'.
Error Code: 207
Call: SELECT Nome, NomeFantasia, Endereco, Bairro, Cidade, UF, CEP, Telefone, Email FROM Pessoas WHERE (Email = ?)
        bind => [come...@tecsolve.com.br]
Query: ReadAllQuery(br.com.conselhos.cotacaoOnline.persistencia.to.Pessoas)

Ivo

Slack

unread,
Sep 14, 2010, 5:04:00 PM9/14/10
to jav...@googlegroups.com
Estou desconfiando do persistence.xml.. mas já tentei de tudo e nada. Está assim nesse momento:

    <persistence-unit name="implantaPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
       
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
    </persistence-unit>

já tentei botar a tag <jta-data-source> e a <non-jta-data-source>, mas nada feito.


2010/9/14 Slack <slac...@gmail.com>

Andre Martins

unread,
Sep 14, 2010, 9:09:28 PM9/14/10
to javasf: JavaServer Faces Group
Fala Slack,

Você está usando JPA?
É sua primeira experiência com mapeamento objeto relacional?

Se você está usando o método createQuery então tá passando um string
JPQL, certo? Pessoas referenciado por você no exemplo que você deu é o
nome da classe ou da tabela do BD?
Se o que você está passando é um SQL então acho que deve usar
createNativeQuery e não createQuery. O primeiro espera um SQL como
argumento e o segundo um JPQL.

Poste o seu mapeamento e o trecho de código em que chama o createQuery
pra podermos ajudar.

PS: Uma outra dica é que entidades e classes em geral, por convenção,
devem ser nomeados no singular. Isso facilita a modelagem e
interpretação dos modelos e diagramas mas isso não é imperativo. Você
pode chamar como quiser, é claro.

Abraços,

André

On 14 set, 18:04, Slack <slack....@gmail.com> wrote:
> Estou desconfiando do persistence.xml.. mas já tentei de tudo e nada. Está
> assim nesse momento:
>
>     <persistence-unit name="implantaPU" transaction-type="RESOURCE_LOCAL">
>         <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
>
>         <exclude-unlisted-classes>false</exclude-unlisted-classes>
>     </persistence-unit>
>
> já tentei botar a tag <jta-data-source> e a <non-jta-data-source>, mas nada
> feito.
>
> 2010/9/14 Slack <slack....@gmail.com>
>
> > Boa tarde,
>
> > estou com um erro que nao consegui corrigir, por isso venho pedir ajuda
> > aqui na lista...
> > Estou fazendo uma busca (EntityManager.createQuery) mas ele ta dando uma
> > erro de coluna inválida. Mas essa coluna está correta tanto no Java como no
> > Banco de Dados (SQL Server). tanto que quando eu colo exatamente a query
> > abaixo no SQL Client ele roda direitinho e retorna exatamente o que quero.
>
> > Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.1 (Build
> > 20080905)): org.eclipse.persistence.exceptions.DatabaseException
> > Internal Exception: java.sql.SQLException: Invalid column name 'Bairro'.
> > Error Code: 207
> > Call: SELECT Nome, NomeFantasia, Endereco, Bairro, Cidade, UF, CEP,
> > Telefone, Email FROM Pessoas WHERE (Email = ?)
> >         bind => [comerc...@tecsolve.com.br]
> > Query: ReadAllQuery(br.com.conselhos.cotacaoOnline.persistencia.to.Pessoas)
>
> > Ivo

Slack

unread,
Sep 15, 2010, 7:50:04 AM9/15/10
to jav...@googlegroups.com
Bom di, André, respondendo suas perguntas:

Sim, estou usando JPA.

'Pessoas' é tanto o nome da tabela quanto do objeto-entidade.

Estou passando um JPQL:
            Query q = em.createQuery("select object(o) from Pessoas as o where o.email = :email");
            q.setParameter("email", email);


Concordo plenamente com a dica de usar entidades no singular, uso assim, mas esse sistema eu já peguei o bonde andando. só pra fazer manutenção evolutiva.

Abraços e obrigado!

2010/9/14 Andre Martins <andregonc...@gmail.com>
--
Você recebeu esta mensagem por que é membro do Google Group "Javasf".
http://groups.google.com/group/javasf

Conheça também:
 - Grupo Java Brazil em http://groups.google.com/group/thejavabrazil

Dionatan Moura

unread,
Sep 15, 2010, 8:04:28 AM9/15/10
to jav...@googlegroups.com
Pode ser alguma configuração da coluna na tua entidade...

Pode colar aqui o código do entity Pessoas?

Valeu!
Dionatan.

2010/9/15 Slack <slac...@gmail.com>

Slack

unread,
Sep 15, 2010, 9:50:37 AM9/15/10
to jav...@googlegroups.com
obrigado mas deu certo..
o problema tava no persistence.xml como eu desconfiava mesmo.. :)

valeu!!


2010/9/15 Dionatan Moura <dion...@gmail.com>

Andre Martins

unread,
Sep 15, 2010, 10:31:50 AM9/15/10
to javasf: JavaServer Faces Group

Legal, Slack!

Abraços e bom trabalho!

On 15 set, 10:50, Slack <slack....@gmail.com> wrote:
> obrigado mas deu certo..
> o problema tava no persistence.xml como eu desconfiava mesmo.. :)
>
> valeu!!
>
> 2010/9/15 Dionatan Moura <diona...@gmail.com>
>
> > Pode ser alguma configuração da coluna na tua entidade...
>
> > Pode colar aqui o código do entity Pessoas?
>
> > Valeu!
> > Dionatan.
>
> > 2010/9/15 Slack <slack....@gmail.com>
>
> >> Bom di, André, respondendo suas perguntas:
>
> >> Sim, estou usando JPA.
>
> >> 'Pessoas' é tanto o nome da tabela quanto do objeto-entidade.
>
> >> Estou passando um JPQL:
> >>             Query q = em.createQuery("select object(o) from Pessoas as o
> >> where o.email = :email");
> >>             q.setParameter("email", email);
>
> >> Concordo plenamente com a dica de usar entidades no singular, uso assim,
> >> mas esse sistema eu já peguei o bonde andando. só pra fazer manutenção
> >> evolutiva.
>
> >> Abraços e obrigado!
>
> >> 2010/9/14 Andre Martins <andregoncalves....@gmail.com>
> >>>  - Grupo Java Brazil emhttp://groups.google.com/group/thejavabrazil
>
> >>  --
> >> Você recebeu esta mensagem por que é membro do Google Group "Javasf".
> >>http://groups.google.com/group/javasf
>
> >> Conheça também:
> >> - Grupo Java Brazil emhttp://groups.google.com/group/thejavabrazil

Douglas Ramiro

unread,
Sep 15, 2010, 10:36:28 AM9/15/10
to jav...@googlegroups.com
Qual a soluçao?
Douglas Ramiro
_____________________________________
Java Developer
Sun Certified Java Associate (SCJA)
Sun Certified Java Programmer (SCJP)

Slack

unread,
Sep 15, 2010, 1:24:44 PM9/15/10
to jav...@googlegroups.com
Tive que tirar o data source e fazer os properties na mão:


    <persistence-unit name="implantaPU" transaction-type="RESOURCE_LOCAL">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="eclipselink.jdbc.driver" value="net.sourceforge.jtds.jdbc.Driver" />
            <property name="eclipselink.jdbc.url" value="jdbc:jtds:sqlserver://localhost:1433/Cotacao" />
            <property name="eclipselink.jdbc.user" value="implanta" />
            <property name="eclipselink.jdbc.password" value="123456"/>
            <property name="eclipselink.cache.shared.default" value="false" />
            <property name="eclipselink.cache.type.default" value="NONE" />
            <property name="eclipselink.cache.size.default" value="0" />
            <property name="eclipselink.jdbc.write-connections.min" value="0"/>
        </properties>
    </persistence-unit>

não sei se é a melhor solução, mas foi a que deu certo. :-)




2010/9/15 Douglas Ramiro <con...@douglasramiro.com.br>
Reply all
Reply to author
Forward
0 new messages