When I create entity with compound primary key with using @Id and @IdClass and one of primary key fields have name "id" then I receive below exception during CriteriaApi equals comparison. org.hibernate.HibernateException: SqlNode's text did not reference expected number of columns but when I change the name from "id" to for example "id1" everything is ok. Below my sample code: public class CompoundPK implements Serializable { @Temporal(TemporalType.TIMESTAMP) private Calendar endTime; private String id; private Integer idEsm; } @Entity @Data @IdClass(CompoundPK.class) public class EntCompound implements Serializable { @Temporal(TemporalType.TIMESTAMP) @Id private Calendar endTime; @Id private String id; @Id private Integer idEsm; private String name; private String name1; private String name2; } CriteriaBuilder builder = em.getCriteriaBuilder(); CriteriaQuery<EntCompound> query = builder.createQuery(EntCompound.class); Subquery<EntCompound> sq = query.subquery(EntCompound.class); Root<EntCompound> sqRoot = sq.from(EntCompound.class); Root<EntCompound> mainRoot = query.from(EntCompound.class); sq.select(sqRoot).where(builder.equal(sqRoot,mainRoot)); Predicate exists = builder.exists(sq); query.select(mainRoot).where(exists); List<EntCompound> resultList = em.createQuery(query).getResultList(); System.out.println(resultList); |