Я хочу использовать критерии, чтобы сделать следующий запрос.У меня есть 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.