JPA Internal Problem Nullpointer

PeanutFlake

Mitglied
Hallo zusammen,

Bei dem Versuch Daten aus der Datenbank mittels JPA zu extrahieren komme ich seit einiger Zeit nicht weiter. Dabei sind allerdings auch die Fehlermeldungen nicht besonders hilfreich.
Ich versuche im Grunde nur eine simple JPQL zuverarbeiten.
Dazu verwende ich die folgenden Methoden.
Code:
public <T> List<T> fetchAll(String object, Class<T> clazz)
{
    return fetch(object, null, clazz);
}
   
public <T> List<T> fetch(String object, Map<String, String> cond, Class<T> clazz)
{
    StringBuilder str = new StringBuilder();
    str.append("SELECT o FROM model." + object + " o");
    if ( cond != null ) {
        str.append(" WHERE 1 ");
        for ( String k : cond.keySet() ) {
            str.append(k + "=" + cond.get(k) + " ");
        }
    }
    TypedQuery<T> q = em.createQuery(str.toString(), clazz);
    //q.setHint(QueryHints.REFRESH, HintValues.TRUE);
    return q.getResultList();
}

Versuche ich jetzt eine ganz simple Abfrage ohne Conditions (z.B. einfach mit object=Berlinbezug und der entsprechenden Klasse) erhalte ich folgende Ausnahmen.

Code:
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Internal problem encountered while compiling [SELECT o FROM model.Berlinbezug o].
Internal Exception: java.lang.NullPointerException
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1616)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1636)
db.DBConnector.fetch(DBConnector.java:251)
db.DBConnector.fetchAll(DBConnector.java:238)
.
.
.
Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.0.v20150210-f44015d): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Internal problem encountered while compiling [SELECT o FROM model.Berlinbezug o].
Internal Exception: java.lang.NullPointerException
org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildUnexpectedException(HermesParser.java:207)
org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:296)
org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1614)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1636)
db.DBConnector.fetch(DBConnector.java:251)
db.DBConnector.fetchAll(DBConnector.java:238)
.
.
.
java.lang.NullPointerException
org.eclipse.persistence.internal.jpa.jpql.RangeDeclaration.convertUnqualifiedDeclaration(RangeDeclaration.java:114)
org.eclipse.persistence.internal.jpa.jpql.RangeDeclaration.buildQueryExpression(RangeDeclaration.java:93)
org.eclipse.persistence.internal.jpa.jpql.Declaration.getQueryExpression(Declaration.java:166)
org.eclipse.persistence.internal.jpa.jpql.JPQLQueryContext.getBaseExpression(JPQLQueryContext.java:501)
org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visitAbstractFromClause(AbstractObjectLevelReadQueryVisitor.java:270)
org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visit(AbstractObjectLevelReadQueryVisitor.java:131)
org.eclipse.persistence.jpa.jpql.parser.FromClause.accept(FromClause.java:48)
org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visitAbstractSelectStatement(AbstractObjectLevelReadQueryVisitor.java:326)
org.eclipse.persistence.internal.jpa.jpql.ReportQueryVisitor.visitAbstractSelectStatement(ReportQueryVisitor.java:92)
org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visit(AbstractObjectLevelReadQueryVisitor.java:183)
org.eclipse.persistence.jpa.jpql.parser.SelectStatement.accept(SelectStatement.java:101)
org.eclipse.persistence.internal.jpa.jpql.HermesParser$DatabaseQueryVisitor.visit(HermesParser.java:438)
org.eclipse.persistence.jpa.jpql.parser.SelectStatement.accept(SelectStatement.java:101)
org.eclipse.persistence.internal.jpa.jpql.HermesParser$DatabaseQueryVisitor.visit(HermesParser.java:418)
org.eclipse.persistence.jpa.jpql.parser.JPQLExpression.accept(JPQLExpression.java:135)
org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:282)
org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102)
org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1614)
org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1636)
db.DBConnector.fetch(DBConnector.java:251)
db.DBConnector.fetchAll(DBConnector.java:238)
.
.
.

Der Eintrag innerhalb der Persistence Unit sieht dabei wie folgt aus:
Code:
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
...
<class>model.Berlinbezug</class>
...
<properties> ...

Entsprechend verschiedener Beiträge, die ich gefunden habe verwende ich den fully-qualified Name. Bei nicht verwenden des Paketbezeichners 'model' erhalte ich auch einen entsprechenden Fehler, dass das Schema nicht bekannt ist.

Ich habe zu Beginn vermutet, dass JPA die Entityklasse nicht findet, worauf auch der Fehler mit dem fehlenden Schema hinwies. Seitdem dieser jedoch weg ist kann ich die Fehlermeldungen nur noch schwer in einen Kontext bringen.

Die Umgebung nutzt Platform Generic 2.1, das Programm wird auf einem Tomcat 7.0.52 deployed.

Ich würde mich freuen, wenn jemand Erfahrung mit der vorliegenden Situation hat.

Thanks4Reading
 

PeanutFlake

Mitglied
model.Berlinbezug ist eine simple Entity die ich beispielhaft benutze, model ist dabei das Package. Das wichtige kurze runter getippt. Dabei gehts nur um Sammlungen von Textfragmenten über die Datenbank.
Code:
package model;
...
@Entity
public class Berlinbezug {
    @Id
    private long Id;
    private String text;
    ...
    // getter/setter ...
}

p.s. mir ist wohl bewusst, dass die fetch Methode mit Einschränkungen oben so nicht funktioniert, darum geht es aber auch nicht. Die entstandene JPQ ist ja in den Fehlern zu sehen.
 

PeanutFlake

Mitglied
In diesem Fall wird mir allerding der Fehler geworfen, dass das abstrakte Schema nicht gefunden werden kann.
Durch Google Suche fand ich den Workaround mit dem fully-qualified Classname, kann natürlich sein, dass die entstandene Situtation nur den eigentlichen Fehler maskiert hat.
 

PeanutFlake

Mitglied
Ja sicher liegt die im Paket model.
An die persistence.xml komm ich heute leider nicht mehr ran.
Dort sind aber noch andere Klassen hinterlegt, alle auch mit package name davor.
Ich war zu Begin auch auf dem Zug, dass das ohne package name in der JPQ laufen sollte, hatte mit dem workaround allerdings fortschritt. Bis zu dem genannten Punkt.
 

mihe7

Top Contributor
Durch Google Suche fand ich den Workaround mit dem fully-qualified Classname
Entity und Entity-Klasse sind verschiedene Dinge. Sofern es um die Auflistung der Entity-Klassen in der persistence.xml geht, ist der FQN der Klasse zu verwenden.

Der Name einer Entity hat aber nur insofern etwas mit dem Klassennamen zu tun, als dass die Entity-Annotation als Standardwert für den Entity-Namen den unqualifizierten Klassennamen der Entity verwendet. D. h.
Code:
@Entity
public class Berlinbezug {
ist gleichbedeutend mit
Code:
@Entity(name="Berlinbezug")
public class Berlinbezug {
Die Query lautet in beiden Fällen SELECT o FROM Berlinbezug o.
 

PeanutFlake

Mitglied
Die Queries funktionieren mittlerweille, dabei auch als "model.Berlinbezug".
Die Klassen liegen im Paket model und nutzen keine Alias für die Entities.
Code:
Load Userlist from Database...
Fetch Data with JPQ: SELECT o FROM model.User o
Received 2 Users.

Scheint aber auch eine Situtation gewesen zu sein, die durch Datenmüll oder sonstiges verursacht wurde.
Nach project clean, rebuild UND restart vom tomcat läuft es nun.

Danke dennoch für die Hilfe
 

PeanutFlake

Mitglied
Ok der workaround hat das Problem wirklich maskiert, das eigentliche Problem läuft auf folgendes hinaus
Code:
Exception [EclipseLink-48] (Eclipse Persistence Services - 2.6.0.v20150210-f44015d): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: Multiple writable mappings exist for the field [...].

Zu lösen mit folgender Ergänzung
Code:
@JoinColumn(name="FID", insertable=false, updatable=false)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K STRUTS The server encountered an internal error Allgemeines EE 5
D Eure Meinung über Internal Server Error Allgemeines EE 2
D Problem mit redundanten Servern Allgemeines EE 7
Azemaria JSF: Problem bei der einfachsten Applikation Allgemeines EE 2
S MessageDrivenBean Problem beim Zugriff auf Stateful EJB Allgemeines EE 2
M Glassfish Deployment-Problem unter Eclipse Allgemeines EE 0
B Problem beim Lesen des Codes... Allgemeines EE 2
R JPA Problem beim Speichern eines Users Allgemeines EE 2
S WebSocket Problem Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
G Problem: Servlet in JSP einbinden mit <jsp:include> Allgemeines EE 3
Raidri [SEAM] rich:dataTable sortBy Problem Allgemeines EE 6
T Problem mit den Beispielen von Apache Allgemeines EE 5
W JSF Validator Problem HTTP Status 500 Allgemeines EE 2
E JBoss 7.1 Datasource Problem Allgemeines EE 2
M JSP Problem -unbestimmte Anzahl von Werten Transportieren Allgemeines EE 9
S Problem mit EJB Verständnis Allgemeines EE 4
B Problem beim einbinden einer CSS in eine JSP Allgemeines EE 8
F JSP Problem mit Datenbankanbindung über Glassfishserver Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
S Embedded JBoss Problem beim Deployment Allgemeines EE 4
E Session Problem Allgemeines EE 9
F problem mit nullpointer bei DB zugriff Allgemeines EE 2
A Erste Schritte... Problem mit Hibernate Allgemeines EE 15
ruutaiokwu jboss problem - work-verzeichnis muss manuell gelöscht werden??? Allgemeines EE 5
Stillmatic sendRedirect Problem! Allgemeines EE 3
M Problem mit Lookup auf EJB3 mit Glassfish Allgemeines EE 11
0 Problem mit librarys javax.servlet.http.HttpServletRequest cannot be resolved Allgemeines EE 1
X JBoss InitialContext problem Allgemeines EE 5
LordZed Problem mit dem einbinden von Bibliotheken, die sich gegenseitig verwenden Allgemeines EE 5
H GWT Problem beim Ausführen Allgemeines EE 8
Q Problem mit JMS und Weblogic 10 Allgemeines EE 5
E Performance-Problem beim ersten Request Allgemeines EE 4
G Multi User Problem Allgemeines EE 8
G Datasource Problem Allgemeines EE 1
J OOP Java Array Problem Allgemeines EE 2
T Problem mit Java Transaction API Allgemeines EE 2
D Problem mit EJB: Bean soll Objekt eigener Klasse zurückgeben Allgemeines EE 2
N JavaMail Problem Allgemeines EE 4
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
A Tomcat -- JSP: komisches Problem Allgemeines EE 11
W Speicher-Problem bei WebApp unter Tomcat, Struts, Hibernate Allgemeines EE 3
B Problem mit ActionListener Allgemeines EE 13
G Simples JSF-Projekt in Eclipse - Problem Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
J Problem mit EJB Aufruf und DualCore Rechner Allgemeines EE 4
J ejb3.0 datenbank problem Allgemeines EE 2
J Problem mit Zurück-Button Allgemeines EE 2
T Tomcat: JNDI + JDBC Problem Allgemeines EE 3
J problem mit jsp/js Allgemeines EE 2
B Help - EJB2 - Problem mit Hybernate und "LIMIT" Allgemeines EE 6
B JSTL Problem Allgemeines EE 8
byte Tomcat Deployment Problem (HTTP Status 503) Allgemeines EE 8
S Problem mit t:selectOneRadio und ValueChangeListener Allgemeines EE 2
S Problem mit Struts und tiles Allgemeines EE 4
B Problem mit JBoss-4.2.1.GA Allgemeines EE 8
N Tiles - JSF Problem Allgemeines EE 3
M JSF & EJB "Bean not bound" Problem Allgemeines EE 4
V MYSQL JDBC;java.lang.ClassNotFoundException; Problem Eclipse Allgemeines EE 3
megachucky JMS - Problem mit TemporaryQueue Allgemeines EE 2
G Problem mit MimeType/ContentType Allgemeines EE 4
E Java Mail problem Allgemeines EE 5
Y XFire - Maven Build Problem Allgemeines EE 2
D JSP Problem mit equals? Allgemeines EE 2
A Eclipse Start-Problem Allgemeines EE 5
S JSF - Custom converter Problem Allgemeines EE 3
Y JSF Uhrzeitausgabe Problem Allgemeines EE 4
M servlet --> jsp - problem beim umstrukturieren Allgemeines EE 5
Y JSF - rendered Problem Allgemeines EE 1
D Servlet Problem über Server Allgemeines EE 26
Zed JSF h:inputText h:outputText update Problem Allgemeines EE 2
K mysql treiber problem wenn import java.sql.* bei _servlet_ Allgemeines EE 2
S JDBC Mysql Connection Problem - datasource null Allgemeines EE 3
T Session-Problem Allgemeines EE 2
R Tiles - Layout-Problem wegen Leerzeichen Allgemeines EE 6
G Tomcat / Eclipse oder Web.xml Problem Allgemeines EE 11
S Netbeans 5.5 Visual Web Pack Problem mit INSERT und PK Allgemeines EE 4
D JSF Problem mit Action Allgemeines EE 2
F Klassen und zugriffs Problem "Help wanted"! Allgemeines EE 16
D <input type="file"> Problem Allgemeines EE 6
N Struts - Problem mit <html:link> Action Allgemeines EE 3
A Problem / Fehler beim Einbinden einer Klasse in ein JSP Allgemeines EE 20
G Session Problem Allgemeines EE 5
T Ant Compiler Problem Allgemeines EE 9
T Problem dem Zaehler in mein Java - Code Allgemeines EE 2
A Hibernate-Problem mit MySQL-Cluster Allgemeines EE 6
H Servlet problem Allgemeines EE 10
G Problem mit Benutzerverwaltung Allgemeines EE 3
S Hibernate Mapping Problem Allgemeines EE 3
S Hibernate INSERT Problem Allgemeines EE 11
S Dummes JSP-Problem Allgemeines EE 8
P EJB-Installations-Problem Allgemeines EE 4
S CSS Problem in JSP Allgemeines EE 16
C Problem mit html:optionsCollection Allgemeines EE 4
R HILFE: Problem mit JSF examples Allgemeines EE 10
R Problem mit value-expression Allgemeines EE 7
R Problem mit for-schleife in JSP tag Allgemeines EE 8
B Struts Problem: Array in JSP ausgeben (logic:iterate) Allgemeines EE 12
M Redirct-Problem Allgemeines EE 4
M Geronimo v1.1 - Problem mit EAR deployen Allgemeines EE 5

Ähnliche Java Themen

Neue Themen


Oben