Я хочу использовать критерии, чтобы сделать следующий запрос. У меня есть Entity с EmbeddedId:
@Entity
@Table(name="TB_INTERFASES")
public class Interfase implements Serializable {
@EmbeddedId
private InterfaseId id;
}
@Embeddable
public class InterfaseId implements Serializable {
@Column(name="CLASE")
private String clase;
}
И запрос критериев, который я пытаюсь сделать, это:
CriteriaBuilder criteriaBuilder = this.entityManager.getCriteriaBuilder();
CriteriaQuery<Interfase> criteriaQuery = criteriaBuilder.createQuery(Interfase.class);
Root<Interfase> entity = criteriaQuery.from(Interfase.class);
criteriaQuery.where(
criteriaBuilder.equal(entity.get("clase"), "Clase"),
);
Но это бросает исключение IllegalArgumentException:
java.lang.IllegalArgumentException: Not an managed type: class InterfaseId
Я тоже пробовал с этими запросами:
Root<Interfase> entity = criteriaQuery.from(Interfase.class);
criteriaQuery.where(
criteriaBuilder.equal(entity.get("id").get("clase"), "Clase"),
);
и этот тоже...
Root<Interfase> entity = criteriaQuery.from(Interfase.class);
criteriaQuery.where(
criteriaBuilder.equal(entity.get("id.clase", "Clase"),
);
не повезло. Итак, мой вопрос: как я могу сделать запрос с критериями, когда мои классы используют аннотации Embedded и EmbeddedId?
Спасибо!. Mauro.