0 votes
in Education by (1.7m points)
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<Object> path = entity.get(name);

private static final EntityManager em;

private final CriteriaBuilder cb = em.getCriteriaBuilder();

private final CriteriaQuery<Y> query = cb.createQuery(Y.class);

private final Root<Y> entity = query.from(Y.class);

static {

    Map<String, Object> properties = new HashMap<String, Object>();

        // 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) {

        this.id = id;

    }

    @Override

    public Object getPK() {

        return id;

    }

}

@Test

public void simpleTest() {

    List<Y> yy = new ArrayList<Y>();

    Y yX1 = new Y(5);

    yy.add(yX1);

    Y yX2 = new Y(6);

    yy.add(yX2);

    saveItems(yy);

    String name = "id";

    Path<Object> path = entity.get(name);

    Predicate restriction = cb.conjunction();

    restriction = cb.and(restriction, cb.and(new Predicate[]{cb.equal(path, 5)}));

    TypedQuery<Y> 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)

Add Answer

...