folder Tahribat.com Forumları
linefolder Java
linefolder Hibernate Hata Analiz Anlayanlar Bir Yorum Yapabilir Mi ?



Hibernate Hata Analiz Anlayanlar Bir Yorum Yapabilir Mi ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Marslan
    Marslan's avatar
    Kayıt Tarihi: 31/Ağustos/2012
    Erkek

    Selam millet, kafama takılan deli bir soru birisi aşağıdaki gibi bir java kodu yazmış(kod algoritma vs hatalı yanlış sorun o değil) bende yazılmış servisi kullanıyordum db de data olmasına rağmen(çıktısı olan sorguyu alıpğ doğrudan ilgili db de çalıştırıyorum sonuç geliyor) kayıt bulunamıyor mantıksal bir hata göremiyorum kodu olması gerektiği gibi düzelttim(daha aşağıda) sonuç geldi. sizce ilk halinin çalışmamasının sebebi nedir mantıklı izahatı olacak kişiler bilgilendirirse memnun olurum. 

    Hiç birşey olmasa bile debug ta List<Language> langList = criteria.list(); bu kodta list içerisine kayıt gelmesiniş beklerim ama empty list geliyor.

    Hatalı var olan kod

    public Language getLanguageByCode(String code) {
        Criteria criteria = getSession().createCriteria(Language.class);
        if (code.length() == 3)
          criteria = criteria.add(Restrictions.eq("threeCode", code.toUpperCase()));
        else if (code.length() == 2)
          criteria = criteria.add(Restrictions.eq("twoCode", code.toUpperCase()));
        else {
          throw new RuntimeException("code incorrect");
        }
        criteria = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        @SuppressWarnings("unchecked")
        List<Language> langList = criteria.list();
        Language lang = null;
        if (langList.size() > 1) {
          LOG.error("Query result size is bigger than expected!");
          lang = (Language) criteria.list().get(0);
        } else if (langList.size() == 1) {
          criteria.setFirstResult(0);
          criteria.setMaxResults(1);
          lang = (Language) criteria.uniqueResult();
        }
        return lang;
      }

    sql çıktısı

    Hibernate: 
    
        select
    
            this_.id as id23_0_,
    
            this_.three_code as three2_23_0_,
    
            this_.title as title23_0_,
    
            this_.two_code as two4_23_0_ 
    
        from
    
            language this_ 
    
        where
    
            this_.two_code=?
    
    2019-06-12 16:12:15 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - TR


    düzeltilmiş hali

    public Language getLanguageByCode(String code) {
        Criteria criteria = getSession().createCriteria(Language.class);
        if (code.length() == 3)
          criteria = criteria.add(Restrictions.eq("threeCode", code.toUpperCase()));
        else if (code.length() == 2)
          criteria = criteria.add(Restrictions.eq("twoCode", code.toUpperCase()));
        else {
          throw new RuntimeException("code incorrect");
        }
        criteria = criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
        @SuppressWarnings("unchecked")
        List<Language> langList = criteria.list();
        if (langList.size() == 0)
          return null;
    
        if (langList.size() > 1)
          LOG.error("Query result size is bigger than expected!");
    
        return langList.get(0);
      }

     


    ...
Toplam Hit: 1997 Toplam Mesaj: 1
java hibernate