Bom dia,
Comecei a mexer com JPA a pouco tempo e por isso estou tendo alguns problemas... Um deles é fazer o seguinte select:
@NamedQuery(name = "verificarReservaProfessor", query = "select eq.nome,r.bloco,r.sala,r.periodo,r.dataReserva,r.obs from Reserva r inner join Equipamento eq on eq.id_equipamento = r.id_equipamento inner join Professor p on p.id_professor = r.id_professor where r.id_professor = :id")
Segue abaixo as classes:
Classe Reserva:
@Table(name = "Reserva")
@NamedQueries({
@NamedQuery(name = "verificarReservaProfessor", query = "select eq.nome,r.bloco,r.sala,r.periodo,r.dataReserva,r.obs from Reserva r inner join Equipamento eq on eq.id_equipamento = r.id_equipamento inner join Professor p on p.id_professor = r.id_professor where r.id_professor = :id")
})
@Entity
public class Reserva implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "id_equipamento", insertable = true, updatable = true)
private Equipamento lEquipamento;
@OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "id_professor", insertable = true, updatable = true)
private Professor lProfessor;
@Temporal(javax.persistence.TemporalType.DATE)
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 = true)
private String obs;
Classe Professor:
@Table(name = "Professor")
@NamedQueries({
@NamedQuery(name = "listarProfessores", query = "select p from Professor p order by p.nome")
})
@Entity
public class Professor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id_professor")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id")
private Reserva reserva;
@Column(nullable = false, length = 150)
private String nome;
@Column(nullable = false, length = 8)
private int matricula;
@Column(nullable = true, length = 50)
private String intranet;
Classe Equipamento:
@Table(name = "Equipamento")
@NamedQueries({
@NamedQuery(name = "verificarDisponibilidade", query = "select e from Equipamento e where e.id not in(select res2.lEquipamento.id from Reserva res2 where res2.dataReserva = :datareserva and res2.periodo = :periodo) and e.nome = :nome"),
@NamedQuery(name = "listarEquipamentos", query = "select e from Equipamento e order by e.patrimonio,e.nome")
})
@Entity
public class Equipamento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id_equipamento")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id")
private Reserva reserva;
@Column(nullable = false, length = 100)
private String nome;
@Column(nullable = false, length = 50)
private String marca;
@Column(nullable = false, length = 50)
private String modelo;
@Column(nullable = false, length = 14)
private int patrimonio;
@Column(nullable = false, length = 50)
private String bloco;
@Column(nullable = false, length = 50)
private String sala;
[TopLink Info]: 2009.09.10 10:33:04.075--ServerSession(25934938)--TopLink, version: Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))
Exception occurred during event dispatching:
Local Exception Stack:
Exception [TOPLINK-8024] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.EJBQLException
Exception Description: Syntax error parsing the query [verificarReservaProfessor: select eq.nome,r.bloco,r.sala,r.periodo,r.dataReserva,r.obs from Reserva r inner join Equipamento eq on eq.id_equipamento = r.id_equipamento inner join Professor p on p.id_professor = r.id_professor where r.id_professor = :id], line 1, column 99: syntax error at [eq].
Internal Exception: line 1:99: expecting DOT, found 'eq'
at oracle.toplink.essentials.exceptions.EJBQLException.syntaxErrorAt(EJBQLException.java:379)
at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.handleANTLRException(EJBQLParser.java:335)
at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.addError(EJBQLParser.java:278)
at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.reportError(EJBQLParser.java:378)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.joinAssociationPathExpression(EJBQLParser.java:1909)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.join(EJBQLParser.java:1768)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.identificationVariableDeclaration(EJBQLParser.java:1629)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.fromClause(EJBQLParser.java:454)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.selectStatement(EJBQLParser.java:179)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.document(EJBQLParser.java:135)
at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.parse(EJBQLParser.java:166)
at oracle.toplink.essentials.internal.parsing.ejbql.EJBQLParser.buildParseTree(EJBQLParser.java:127)
at oracle.toplink.essentials.internal.ejb.cmp3.base.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:215)
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.persist(PersistenceUtil.java:15)
at sc.senai.br.layout.Layout.cadastrarProfessor(Layout.java:1126)
at sc.senai.br.layout.Layout.B_CadastrarProfessorActionPerformed(Layout.java:979)
at sc.senai.br.layout.Layout.access$000(Layout.java:19)
at sc.senai.br.layout.Layout$1.actionPerformed(Layout.java:166)
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.pumpEventsForFilter(EventDispatchThread.java:178)
at java.awt.Dialog$1.run(Dialog.java:1051)
at java.awt.Dialog$3.run(Dialog.java:1103)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1101)
at java.awt.Component.show(Component.java:1516)
at java.awt.Component.setVisible(Component.java:1468)
at java.awt.Window.setVisible(Window.java:841)
at java.awt.Dialog.setVisible(Dialog.java:991)
at sc.senai.br.layout.Layout.Item_CadastrarProfessorActionPerformed(Layout.java:965)
at sc.senai.br.layout.Layout.access$1100(Layout.java:19)
at sc.senai.br.layout.Layout$13.actionPerformed(Layout.java:898)
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.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1225)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1266)
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)
Caused by: line 1:99: expecting DOT, found 'eq'
at persistence.antlr.Parser.match(Parser.java:212)
at oracle.toplink.essentials.internal.parsing.ejbql.antlr273.EJBQLParser.joinAssociationPathExpression(EJBQLParser.java:1901)
... 84 more
CONSTRUÍDO COM SUCESSO (tempo total: 9 segundos)
Alguém poderia me da uma luz da onde estou errando? Desde ja meu obrigado.