Hibernate Hata Analiz Anlayanlar Bir Yorum Yapabilir Mi ?
-
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ş halipublic 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); }