基準を使用して次のクエリを作成したいと考えています。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 アノテーションを使用している場合、基準を使用してクエリを作成するにはどうすればよいですか?
ありがとう!。マウロ。