I'm using JPQL and a NamedQuery to query the database in a combined question.
@NamedQuery(name = "Entry.findAllForName", query = "Select p From Entry p Where p.entryId In(Select dp.entry From EntryPart dp Where dp.part IN(Select d From Part d Where d.senderId = :name))"),
When I run this query, using:
Query query = em.createNamedQuery("Entry.findAllForName").setParameter("name", name);
List<Entry> list = query.getResultList();
logger.info("Complete query size: {}", list.size());
This does return a result set, but it is 0.
When I change the Named Query to:
@NamedQuery(name = "Entry.findAllForName", query = "Select p From Entry p Where p.entryId In(Select dp.entry From EntryPart dp Where dp.part IN(Select d From Part d Where d.senderId = 'SenderName'))"),
It works and I get the expected database result.
I'm not that familiar with JPQL and @NamedQueries, but I can't see the difference between having the String vaule and the parameter value, since when I do a diff, they are the same.
logger.info("SenderName == {} ? {}", name, name.equals("SenderName"));
This returns "SenderName == SenderName ? true"...
Best, Henrik