Hi-Ho zusammen,
folgende Situation. Ich habe in einem Projekt einen NamedNativeQuery. Wenn ich diesen in einer normalen Klasse mit Main-Methode aufrufe
[HIGHLIGHT="Java"]public class Test {
public static void main(String[] args) {
EntityManager entityManager = Persistence.createEntityManagerFactory(
"xyz").createEntityManager();
try {
Query q = entityManager
.createNamedQuery(PlanningData.QUERY);
q.setParameter("version", Long.valueOf(1));
q.setParameter("segmentId", Long.valueOf(1));
q.setParameter("userId", Long.valueOf(1));
q.setParameter("partialAgentAreaId", Long.valueOf(1));
q.setParameter("agentAreaId", Long.valueOf(1));
q.setParameter("collectionId", Long.valueOf(1));
q.setParameter("year", Long.valueOf(2008));
q.getResultList();
} finally {
entityManager.close();
}
}
}[/HIGHLIGHT]
Funktioniert alles wie gewollt. Wenn ich das jetzt aber in einen JUnit-Test im selben Projekt verpacke
[HIGHLIGHT="Java"] try {
Query q = entityManager.createNativeQuery(PlanningData.QUERY);
q.setParameter("version", Long.valueOf(1));
q.setParameter("segmentId", Long.valueOf(1));
q.setParameter("userId", Long.valueOf(1));
q.setParameter("partialAgentAreaId", Long.valueOf(1));
q.setParameter("agentAreaId", Long.valueOf(1));
q.setParameter("collectionId", Long.valueOf(1));
q.setParameter("year", Long.valueOf(2008));
q.getResultList();
} catch (RuntimeException ex) {
logger.debug("get failed", ex);
throw ex;
}
}[/HIGHLIGHT]
Erhalte ich diese Fehlermeldung
Und zwar für alle Parameter. Nachdem ich in meiner Main-Methode und im JUnit-Test auf den selben SQL zugreife (statische Variable "QUERY", die diesen SQL spezifiziert), kann ich mir dieses Verhalten nicht so ganz erklären.
Evtl. kann mir ja jemand den Wald vor lauter Bäumen zeigen!?
Danke
folgende Situation. Ich habe in einem Projekt einen NamedNativeQuery. Wenn ich diesen in einer normalen Klasse mit Main-Methode aufrufe
[HIGHLIGHT="Java"]public class Test {
public static void main(String[] args) {
EntityManager entityManager = Persistence.createEntityManagerFactory(
"xyz").createEntityManager();
try {
Query q = entityManager
.createNamedQuery(PlanningData.QUERY);
q.setParameter("version", Long.valueOf(1));
q.setParameter("segmentId", Long.valueOf(1));
q.setParameter("userId", Long.valueOf(1));
q.setParameter("partialAgentAreaId", Long.valueOf(1));
q.setParameter("agentAreaId", Long.valueOf(1));
q.setParameter("collectionId", Long.valueOf(1));
q.setParameter("year", Long.valueOf(2008));
q.getResultList();
} finally {
entityManager.close();
}
}
}[/HIGHLIGHT]
Funktioniert alles wie gewollt. Wenn ich das jetzt aber in einen JUnit-Test im selben Projekt verpacke
[HIGHLIGHT="Java"] try {
Query q = entityManager.createNativeQuery(PlanningData.QUERY);
q.setParameter("version", Long.valueOf(1));
q.setParameter("segmentId", Long.valueOf(1));
q.setParameter("userId", Long.valueOf(1));
q.setParameter("partialAgentAreaId", Long.valueOf(1));
q.setParameter("agentAreaId", Long.valueOf(1));
q.setParameter("collectionId", Long.valueOf(1));
q.setParameter("year", Long.valueOf(2008));
q.getResultList();
} catch (RuntimeException ex) {
logger.debug("get failed", ex);
throw ex;
}
}[/HIGHLIGHT]
Erhalte ich diese Fehlermeldung
Code:
java.lang.IllegalArgumentException: org.hibernate.QueryParameterException: could not locate named parameter [version]
Und zwar für alle Parameter. Nachdem ich in meiner Main-Methode und im JUnit-Test auf den selben SQL zugreife (statische Variable "QUERY", die diesen SQL spezifiziert), kann ich mir dieses Verhalten nicht so ganz erklären.
Evtl. kann mir ja jemand den Wald vor lauter Bäumen zeigen!?
Danke