Hazırda bekletme konusunda acemiyim ve belirli bir filtreyle eşleşen nesnelerin bir listesini döndürmek için basit bir yöntem yazıyorum. List<Foo>
doğal bir dönüş türü gibi görünüyordu.
Ne yaparsam yapayım, çirkin birini kullanmadığım sürece derleyiciyi mutlu edemiyorum @SuppressWarnings
.
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
public class Foo {
public Session acquireSession() {
// All DB opening, connection etc. removed,
// since the problem is in compilation, not at runtime.
return null;
}
@SuppressWarnings("unchecked") /* <----- */
public List<Foo> activeObjects() {
Session s = acquireSession();
Query q = s.createQuery("from foo where active");
return (List<Foo>) q.list();
}
}
Bundan kurtulmak isterimSuppressWarnings
. Ama yaparsam uyarıyı alırım
Warning: Unchecked cast from List to List<Foo>
(Görmezden gelebilirim, ancak ilk etapta anlamamak istiyorum) ve .list()
dönüş türüne uymak için jeneriği kaldırırsam , uyarıyı alıyorum
Warning: List is a raw type. References to generic type List<E>
should be parameterized.
Ben fark org.hibernate.mapping
yapar bir beyan List
; ama tamamen farklı bir tür - ham tür olarak a Query
döndürür java.util.List
. Yeni bir Hazırda Bekletme'nin (4.0.x) parametreleştirilmiş türleri uygulamamasını garip buluyorum, bu yüzden yanlış bir şey yaptığımdan şüpheleniyorum.
Bir nesne listesine Cast Hibernate sonucuna çok benziyor , ancak burada "zor" hatalarım yok (sistem Foo türünü biliyor ve bir SQLQuery değil, düz bir Sorgu kullanıyorum). Yani neşe yok.
Ben de baktım hazırda Sınıf Cast İstisna o vaat görünüyordu beri ama sonra ben do fark değil aslında herhangi olsun Exception
... benim sorunum sadece bir uyarı - bir kodlama stili, eğer olacak.
Jboss.org'daki belgeler, Hibernate kılavuzları ve birkaç öğretici, konuyu bu kadar ayrıntılı olarak ele almıyor gibi görünüyor (veya doğru yerlerde aramadım mı?). Ayrıntıya girdiklerinde, anında döküm kullanıyorlar - ve bu resmi jboss.org sitesinde olmayan eğitimlerde, bu yüzden biraz temkinliyim.
Kod, derlenmiş bir kere, hiçbir ile çalışır belirgin sorun ... ben ... henüz biliyoruz ki; ve sonuçlar beklenenlerdir.
Yani: bunu doğru yapıyor muyum? Bariz bir şeyi mi kaçırıyorum? Bunu Yapmanın "resmi" veya "önerilen" bir yolu var mı ?