Hallo,
ich habe ein JPA Projekt in Verbindung mit MySQL erstellt.
Zur Suche einer Geschaeftsstelle habe ich folgenden Code:
Wenn ich das nun ausführe und zB mit einer ID von 3 kommt folgender Fehler:
Ein bisschen Hilfe wäre nett
ich habe ein JPA Projekt in Verbindung mit MySQL erstellt.
Zur Suche einer Geschaeftsstelle habe ich folgenden Code:
Java:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
//
// Suchen
try{
EntityManagerFactory emf = Persistence.createEntityManagerFactory("wf_projekt");
EntityManager em = emf.createEntityManager();
Query q = null;
if(jTextField1.getText() != null ){
String s = jTextField1.getText();
q = em.createQuery("SELECT * FROM Geschaeftsstelle WHERE GsID = " + s + ";");
}
else if(jTextField2.getText() != null ){
String s = jTextField2.getText();
q = em.createQuery("SELECT * FROM Geschaeftsstelle WHERE Wohnort = " + s + ";");
}
else if(jComboBox1.getSelectedItem() != null){
String s = (String) jComboBox1.getSelectedItem();
q = em.createQuery("SELECT * FROM Geschaeftsstelle WHERE Land = " + s + ";");
}
else{
q = em.createQuery("SELECT * FROM Geschaeftsstelle;");
}
@SuppressWarnings("unchecked")
List<Geschaeftsstelle> gsList = q.getResultList();
int r = 1;
for(Geschaeftsstelle geschaeftsstelle : gsList){
jTable1.setValueAt(Integer.toString(geschaeftsstelle.getGsID()), r, 1);
jTable1.setValueAt(geschaeftsstelle.getStrasse().toString(), r, 2);
jTable1.setValueAt(Integer.toString(geschaeftsstelle.getPlz()), r, 3);
jTable1.setValueAt(geschaeftsstelle.getWohnort().toString(), r, 4);
jTable1.setValueAt(geschaeftsstelle.getLand().toString(), r, 5);
r++;
}
em.close();
emf.close();
JOptionPane.showMessageDialog(null, "Daten geladen");
}
catch(Exception e){
JOptionPane.showMessageDialog(null, "Fehler");
System.err.println(e.getMessage());
}
}//GEN-LAST:event_jButton1ActionPerformed
Wenn ich das nun ausführe und zB mit einer ID von 3 kommt folgender Fehler:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [SELECT * FROM Geschaeftsstelle WHERE GsID = 3;].
[31, 31] A select statement must have a FROM clause.
[7, 7] The left expression is missing from the arithmetic expression.
[9, 31] The right expression is not an arithmetic expression.
[44, 46] '3;' is not a valid numeric value.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
at gui.GeschaeftsstelleUI.jButton1ActionPerformed(GeschaeftsstelleUI.java:510)
at gui.GeschaeftsstelleUI.access$0(GeschaeftsstelleUI.java:500)
at gui.GeschaeftsstelleUI$1.actionPerformed(GeschaeftsstelleUI.java:159)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [SELECT * FROM Geschaeftsstelle WHERE GsID = 3;].
[31, 31] A select statement must have a FROM clause.
[7, 7] The left expression is missing from the arithmetic expression.
[9, 31] The right expression is not an arithmetic expression.
[44, 46] '3;' is not a valid numeric value.
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603)
... 39 more
Ein bisschen Hilfe wäre nett