in Education by

Calling javax.persistence.criteria.Path.get(String name) fails for the simple class hierarchy detailed below. The call succeeds if @IdClass and 2nd id field (i.e. id2) are removed. Anyone know why this is so. Does this mean it is not possible to query on a single id field where that id field forms part of a composite key? failing call is: Path path = entity.get(name); private static final EntityManager em; private final CriteriaBuilder cb = em.getCriteriaBuilder(); private final CriteriaQuery query = cb.createQuery(Y.class); private final Root entity = query.from(Y.class); static { Map properties = new HashMap(); // initialise properties appropriately EntityManagerFactory emf = Persistence.createEntityManagerFactory("test", properties); em = emf.createEntityManager(); } interface PK { Object getPK(); } public static class YPK implements Serializable { int id; int id2; YPK(int id, int id2) { } // Override hashCode() and equals() appropriately } @IdClass(YPK.class) @Entity public static class Y implements Serializable, PK { @Id int id; @Id int id2; protected Y() { } public Y(int id) { = id; } @Override public Object getPK() { return id; } } @Test public void simpleTest() { List yy = new ArrayList(); Y yX1 = new Y(5); yy.add(yX1); Y yX2 = new Y(6); yy.add(yX2); saveItems(yy); String name = "id"; Path path = entity.get(name); Predicate restriction = cb.conjunction(); restriction = cb.and(restriction, cb.and(new Predicate[]{cb.equal(path, 5)})); TypedQuery tq = em.createQuery(this.query); Y result = null; try { result = tq.getSingleResult(); } catch (NoResultException e) { } assertNotNull(result); } JavaScript questions and answers, JavaScript questions pdf, JavaScript question bank, JavaScript questions and answers pdf, mcq on JavaScript pdf, JavaScript questions and solutions, JavaScript mcq Test , Interview JavaScript questions, JavaScript Questions for Interview, JavaScript MCQ (Multiple Choice Questions)

Please log in or register to answer this question.

Related questions