| MapJoin#entry() does not seem to work. Example: EntityManager entityManager = emf.createEntityManager(); CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); CriteriaQuery<Map.Entry> query = criteriaBuilder.createQuery(Map.Entry.class); Root<Customer> customer = query.from(Customer.class); MapJoin<Customer, String, Order> orderMap = customer.join(Customer_.orderMap); query.select(orderMap.entry()); TypedQuery<Map.Entry> typedQuery = entityManager.createQuery(query);//exception thrown here List<Map.Entry> resultList = typedQuery.getResultList(); ends up in : java.lang.ClassCastException: org.hibernate.metamodel.internal.PluralAttributeImpl$MapAttributeImpl cannot be cast to org.hibernate.query.criteria.internal.Renderable at org.hibernate.query.criteria.internal.expression.MapEntryExpression.path(MapEntryExpression.java:62) at org.hibernate.query.criteria.internal.expression.MapEntryExpression.renderProjection(MapEntryExpression.java:56) Whereas JPQL working fine: EntityManager em = emf.createEntityManager(); TypedQuery<Map.Entry> query = em.createQuery("SELECT ENTRY(c.orderMap) FROM Customer c", Map.Entry.class); List<Map.Entry> resultList = query.getResultList(); Assert.assertTrue(resultList.size()==1); Assert.assertEquals("online", resultList.get(0).getKey()); ------------- attached is unit test. |