SORU
22 EYLÜL 2008, PAZARTESİ


Nasıl Hazırda HQL sonuçları ile tip güvenlik uyarıları önlemek için?

Örneğin böyle bir sorgu var:

Query q = sess.createQuery("from Cat cat");
List cats = q.list();

Eğer böyle bir şey yapmak için çalışırsanız uyarı gösterecektir "güvenlik Türü: dosya türü Listesinde, ifade kontrolsüz dönüşüm Listesi uyması gerekiyor" dediler

List<Cat> cats = q.list();

Bunu önlemek için bir yol var mı?

CEVAP
23 EYLÜL 2008, Salı


Her yerde @SuppressWarnings kullanarak önerdiği gibi, parmağını biraz q.list() diyorsun her seferinde yazmak içeriyor olsa da, bunu yapmak için iyi bir yoldur.

Öneririm diğer iki tekniği vardır:

Collections.checkedList()

Bu görevin yerine:

List<Cat> cats = Collections.checkedList(q.list(), Cat.class);

Bu özellikle equals hashCode açısından javadoc for that method, kontrol etmek isteyebilirsiniz.

Dökme Yardımcısı yazın

Sadece 12 ** tek bir yerde tüm yeniden:

List<Cat> cats = MyHibernateUtils.listAndCast(q);

...

public static <T> List<T> listAndCast(Query q) {
    @SuppressWarnings("unchecked")
    List list = q.list();
    return list;
}

Bazı yorumlar:

  • Seçtiğim için geçiş Query yerine sonucu q.list() çünkü bu şekilde bu "hile" yöntemi yalnızca kullanılabilir hile ile Hazırda bekleme ve herhangi bir hile List genel.
  • .iterate() vb için benzer yöntemler ekleyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AverageBroTV

    AverageBroTV

    20 Mart 2013
  • HER0R

    HER0R

    16 Aralık 2007
  • martin shervington

    martin sherv

    7 EKİM 2011