quarkusio/quarkus · error · RuntimeException
Wrong result from named JPA query
Error message
Wrong result from named JPA query
What it means
Assertion in the jpa-mysql test endpoint after executing the named query 'get_person_by_name' with parameter name='Quarkus'. The single result returned was not the Person named 'Quarkus', meaning the named query definition or the persisted data does not match expectations.
Source
Thrown at integration-tests/jpa-mysql/src/main/java/io/quarkus/it/jpa/mysql/JPAFunctionalityTestEndpoint.java:73
throw new RuntimeException("Incorrect order of results");
}
StringBuilder sb = new StringBuilder("list of stored Person names:\n\t");
for (Person p : allpersons) {
p.describeFully(sb);
}
sb.append("\nList complete.\n");
System.out.print(sb);
});
//Try a JPA named query:
QuarkusTransaction.requiringNew().run(() -> {
TypedQuery<Person> typedQuery = em.createNamedQuery(
"get_person_by_name", Person.class);
typedQuery.setParameter("name", "Quarkus");
final Person singleResult = typedQuery.getSingleResult();
if (!singleResult.getName().equals("Quarkus")) {
throw new RuntimeException("Wrong result from named JPA query");
}
});
cleanUpData();
return "OK";
}
private void cleanUpData() {
QuarkusTransaction.requiringNew()
.run(() -> em.createNativeQuery("Delete from Person").executeUpdate());
}
private void persistNewPerson(String name) {
Person person = new Person();
person.setName(name);
person.setAddress(new Address("Street " + randomName()));
em.persist(person);View on GitHub (pinned to e1c734241f)
Solutions
- Open Person.java and verify the @NamedQuery JPQL: 'select p from Person p where p.name = :name'
- Log/inspect the returned entity to see which row was actually matched
- Re-seed data so a Person named 'Quarkus' exists before running the query
- Confirm the named query is registered on the correct entity
Example fix
// before (in Person entity)
@NamedQuery(name = "get_person_by_name", query = "select p from Person p where p.name = :name")
// verify persisted row
if (!singleResult.getName().equals("Quarkus")) {
throw new RuntimeException("Wrong result from named JPA query: " + singleResult.getName());
} Defensive patterns
Strategy: validation
Validate before calling
// verify named query exists and data present before getSingleResult
List<Person> matches = em.createQuery("select p from Person p where p.name = :name", Person.class)
.setParameter("name", "Quarkus").getResultList();
if (matches.size() != 1) {
throw new IllegalStateException("Expected exactly 1 'Quarkus' Person, got " + matches.size());
} Try / catch
try {
Person p = typedQuery.getSingleResult();
} catch (NoResultException | NonUniqueResultException e) {
throw new AssertionError("named query 'get_person_by_name' returned invalid result", e);
} Prevention
- Keep @NamedQuery JPQL in sync with entity fields
- Use getResultList + size checks instead of getSingleResult in tests
- Re-seed data in a committed transaction before querying
When it happens
Trigger: em.createNamedQuery("get_person_by_name", Person.class).setParameter("name", "Quarkus").getSingleResult() returning an entity whose name differs — usually a mis-defined @NamedQuery in the Person entity or wrong row stored.
Common situations: @NamedQuery JPQL edited or misaligned with the entity field, multiple rows matching causing getSingleResult ambiguity issues, or stale seeded data.
Related errors
- Wrong result from named JPA query
- Wrong result from named JPA query
- Incorrect number of results
- Incorrect order of results
- Wrong result from named JPA query
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/3b5418cace728732.
Report an issue: GitHub.