Çok basit bir sorum var ama doğru çözümü bulamıyorum. JPAEntity'in tüm kayıtlarını okumak için JPAEntity sınıfına yalnızca bir referansa sahip bir CriteriaQuery kullanarak okumak istiyorum.Farklı Nesneler İçin KriterlerQuery
folowing Kod çalışır ve ne istiyorum yapar:
private void test(Field jpaField) {
List l;
final Class c = jpaField.getType();
final CriteriaQuery criteriaQuery = em.getCriteriaBuilder().createQuery(c);
criteriaQuery.select(criteriaQuery.from(c));
l = em.createQuery(criteriaQuery).getResultList();
...
}
Ama tip safty ilgili birçok uyarı olsun. Ben jenerik kalırken bu sorunu çözmek için aşağıdaki düzeltme çalıştı:
private void test(Field jpaField) {
List<?> l;
final Class<?> c = jpaField.getType();
final CriteriaQuery<?> criteriaQuery = em.getCriteriaBuilder().createQuery(c);
criteriaQuery.select(criteriaQuery.from(c));
l = em.createQuery(criteriaQuery).getResultList();
...
}
Ama şimdi unmatching türleri hakkında hataları olsun. Sanırım bir şekilde yaratıyorum ki Query (c) ve (c) 'nin aynı tipini kullanması gerekiyor. Ama nasıl olduğunu bilmiyorum. Bu kalıbı nasıl kullanacağını bilen var mı?
Herhangi bir ipucu için teşekkür ederiz.
Saygılarımızla, Dominic
Ancak "Alan" bir "Varlık" değil midir? –
Şu an açıklamada eksik bir şey var: Bu örnekte jpaField, diğer bir varlığa işaret eden bir ManyToOne Alanıdır. Bu nedenle jpaField.getType() ve sonuç olarak değişken c bir JPA-Varlığıdır. Sahayı unutabilir ve sadece Sınıf c'yi bir JPA Entity sınıfı olarak kabul edebilirsiniz. Bunun için üzgünüm. Wirtten: Kod, türlerini belirtmeye çalışmadığım sürece çalışır ancak uyarılarla .. – Dominic