Não consigo fazer a consulta com TopLink!

6 respostas
D

Bom dia,

Seguinte pessoal estou utilizando toplink com o postgres pra desenvolver um sisteminha…
Sou meio novato na parte de toplink e tals…
Mais não estou conseguindo fazer a seguinte consulta:

Ela esta dando o seguinte erro:

[TopLink Info]: 2009.09.02 08:16:10.949--ServerSession(18064701)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007)) Exception in thread "AWT-EventQueue-0" Local Exception Stack: Exception [TOPLINK-8030] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EJBQLException Exception Description: Error compiling the query [verificarDisponibilidade: select e from Equipamento e where e.id not in(select res2.equipamento_id from Reserva res2 where res2.datareserva = :datareserva and res2.periodo = :periodo) and e.nome = :nome], line 1, column 59: unknown state or association field [equipamento_id] of class [sc.senai.br.persistencias.Reserva]. at oracle.toplink.essentials.exceptions.EJBQLException.unknownAttribute(EJBQLException.java:474) at oracle.toplink.essentials.internal.parsing.DotNode.validate(DotNode.java:101) at oracle.toplink.essentials.internal.parsing.SelectNode.validate(SelectNode.java:329) at oracle.toplink.essentials.internal.parsing.ParseTree.validate(ParseTree.java:229) at oracle.toplink.essentials.internal.parsing.SubqueryNode.validate(SubqueryNode.java:104) at oracle.toplink.essentials.internal.parsing.InNode.validate(InNode.java:93) at oracle.toplink.essentials.internal.parsing.Node.validate(Node.java:115) at oracle.toplink.essentials.internal.parsing.LogicalOperatorNode.validate(LogicalOperatorNode.java:63) at oracle.toplink.essentials.internal.parsing.WhereNode.validate(WhereNode.java:58) at oracle.toplink.essentials.internal.parsing.ParseTree.validate(ParseTree.java:235) at oracle.toplink.essentials.internal.parsing.ParseTree.validate(ParseTree.java:211) at oracle.toplink.essentials.internal.parsing.ParseTree.validate(ParseTree.java:201) at oracle.toplink.essentials.internal.parsing.EJBQLParseTree.populateReadQueryInternal(EJBQLParseTree.java:134) at oracle.toplink.essentials.internal.parsing.EJBQLParseTree.populateQuery(EJBQLParseTree.java:108) at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:219) at oracle.toplink.essentials.queryframework.EJBQLPlaceHolderQuery.processEjbQLQuery(EJBQLPlaceHolderQuery.java:111) at oracle.toplink.essentials.internal.sessions.AbstractSession.processEJBQLQueries(AbstractSession.java:2059) at oracle.toplink.essentials.internal.sessions.AbstractSession.processEJBQLQueries(AbstractSession.java:2046) at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:724) at oracle.toplink.essentials.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:604) at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:280) at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:229) at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:93) at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:126) at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:120) at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:91) at sc.senai.br.persistencias.PersistenceUtil.verificarDisponibilidade(PersistenceUtil.java:30) at sc.senai.br.layout.Layout.B_VerificarDisponibilidadeActionPerformed(Layout.java:611) at sc.senai.br.layout.Layout.access$300(Layout.java:16) at sc.senai.br.layout.Layout$4.actionPerformed(Layout.java:339) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6216) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5981) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4583) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4556) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4220) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4150) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2475) at java.awt.Component.dispatchEvent(Component.java:4413) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Alguém sabe me dizer o porque? Desde ja eu agradeço!
Obrigado

6 Respostas

diegosantiviago

column 59: unknown state or association field [equipamento_id]

você possui o atributo equipamento_id na sua classe Reserva ou equipamento_id é o nome da coluna na tabela?

D

é o nome da coluna na tabela

D

Alguém para me ajudar?

Andre_Brito

Cara, você pode colocar a classe Reserva? Pelo menos onde é feito o mapeamento dela.

D

Como disse ainda sou novato no ramo de JPA… A classe reserva esta assim:

import java.io.Serializable;
import java.sql.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Reserva implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;
    @OneToOne(cascade = CascadeType.ALL, optional = false)
    private Equipamento equipamento;
    @OneToOne(cascade = CascadeType.ALL, optional = false)
    private Professor professor;
    @Column(length = 11, nullable = false)
    private Date dataReserva;
    @Column(length = 20, nullable = false)
    private String periodo;
    @Column(length = 20, nullable = false)
    private String bloco;
    @Column(length = 20, nullable = false)
    private String sala;
    @Column(length = 350, nullable = false)
    private String obs;

    public String getBloco() {
        return bloco;
    }

    public void setBloco(String bloco) {
        this.bloco = bloco;
    }

    public Date getDataReserva() {
        return dataReserva;
    }

    public void setDataReserva(Date dataReserva) {
        this.dataReserva = dataReserva;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

    public String getPeriodo() {
        return periodo;
    }

    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    public String getSala() {
        return sala;
    }

    public void setSala(String sala) {
        this.sala = sala;
    }

    public Equipamento getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(Equipamento equipamento) {
        this.equipamento = equipamento;
    }

    public Professor getProfessor() {
        return professor;
    }

    public void setProfessor(Professor professor) {
        this.professor = professor;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Reserva)) {
            return false;
        }
        Reserva other = (Reserva) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sc.senai.br.persistencias.Reserva[id=" + id + "]";
    }
}
D

Como disse ainda sou novato no ramo de JPA… A classe reserva esta assim:

import java.io.Serializable;
import java.sql.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Reserva implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;
    @OneToOne(cascade = CascadeType.ALL, optional = false)
    private Equipamento equipamento;
    @OneToOne(cascade = CascadeType.ALL, optional = false)
    private Professor professor;
    @Column(length = 11, nullable = false)
    private Date dataReserva;
    @Column(length = 20, nullable = false)
    private String periodo;
    @Column(length = 20, nullable = false)
    private String bloco;
    @Column(length = 20, nullable = false)
    private String sala;
    @Column(length = 350, nullable = false)
    private String obs;

    public String getBloco() {
        return bloco;
    }

    public void setBloco(String bloco) {
        this.bloco = bloco;
    }

    public Date getDataReserva() {
        return dataReserva;
    }

    public void setDataReserva(Date dataReserva) {
        this.dataReserva = dataReserva;
    }

    public String getObs() {
        return obs;
    }

    public void setObs(String obs) {
        this.obs = obs;
    }

    public String getPeriodo() {
        return periodo;
    }

    public void setPeriodo(String periodo) {
        this.periodo = periodo;
    }

    public String getSala() {
        return sala;
    }

    public void setSala(String sala) {
        this.sala = sala;
    }

    public Equipamento getEquipamento() {
        return equipamento;
    }

    public void setEquipamento(Equipamento equipamento) {
        this.equipamento = equipamento;
    }

    public Professor getProfessor() {
        return professor;
    }

    public void setProfessor(Professor professor) {
        this.professor = professor;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Reserva)) {
            return false;
        }
        Reserva other = (Reserva) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sc.senai.br.persistencias.Reserva[id=" + id + "]";
    }
}
Criado 2 de setembro de 2009
Ultima resposta 3 de set. de 2009
Respostas 6
Participantes 3