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.
Versuche ich jetzt eine ganz simple Abfrage ohne Conditions (z.B. einfach mit object=Berlinbezug und der entsprechenden Klasse) erhalte ich folgende Ausnahmen.
Der Eintrag innerhalb der Persistence Unit sieht dabei wie folgt aus:
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
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