alt text Resimde gördüğünüz gibi bir tablom var mysql veritabanı kullanıyorum String string = "select yuzde from urunler where urunAdi=urunAdi";

Bu şekilde bir sorgu yapıyorum ama hata veriyor. Yapmak istediğim şey şu. Ekrana bir select geliyor oradan ürünün adını seçip gönderiyorum.

Bu seçip gönderdiğim ürün adının yüzde kaç değere sahip olduğunu sorgulayan bir sorgu. Bunun için örneğin fotokopi isimli ürün adı seçildiğinde o tablodaki satırdaki yüzde kaç ise onu bulmak Nasıl olmalı sorgusu ?

soruldu: 23 Tem '14, 09:47

metehan's gravatar image

metehan
26334
cevap kabul oranı: 0%


String yuzdeOrani = (String)em.createQuery("SELECT u.yuzde FROM Urunler u WHERE u.urunAdi=:urunAdi")
                              .setParameter("urunAdi", urunAdi)
                              .getSingleResult();

gibi..

Lakin Hibernate gibi bir ORM kullanmanız daha iyi olur.Criteria API'si oldukça geniş ve zengin ;)


Makul çözüm :

Urunler yuzdem=(Urunler)query.getSingleResult(); bu yanlış bir tanım olmuş ama sanırım obje döndüğü için problem etmemiş.

Sorguyu "SELECT u FROM Urunler u WHERE u.urunAdi=:urunAdi" şeklinde değiştirip,

List<Urunler> urunler = (List<Urunler>)query.getResultList();
 return CollectionUtils.isNotEmtpy(urunler) ? urunler.get(0) : null;

gibi bir yöntem izlemenizde fayda var. Metodunuz Urunler modelinizi dönecektir. Siz içerisinden yuz değerini alırsınız.

urunler.getYuzde() ; gibi..

permanent link

cevaplandı: 23 Tem '14, 10:07

Turgay%20Can's gravatar image

Turgay Can
8.3k63798
cevap kabul oranı: 18%

değiştirildi: 24 Tem '14, 07:33

Teşekküler

(23 Tem '14, 10:23) metehan metehan's gravatar image

Teşekkürler

(23 Tem '14, 10:29) metehan metehan's gravatar image

urunAdi=urunAdi değil, urunAdi=:urunAdi olacak

(23 Tem '14, 10:55) Dkyc Dkyc's gravatar image

getSingleResult() size entity sınıfında o alan için ne tanımladıysanız o türü dönderir. Tablodan bir 'urunAdi' çekip Urunler objesi olarak cast etmeye çalışıyorsunuz bu da yanlış

(23 Tem '14, 11:11) Dkyc Dkyc's gravatar image

Sanırım yorumlarınız soru içerisindeki bilgiler ile ilgili. Öyle ise, soru altına yorum yaparsanız daha iyi olur, yanlış bir algı oluşturabilir.

(23 Tem '14, 12:33) Turgay Can Turgay%20Can's gravatar image
1

null sonuç üreten sorgularda, getSingleResult() fonksiyonu hata veriyor. getResultList() fonksiyonu ile bilgiyi alıp, kendi yazdığınız bir fonksiyonla kontrol ettirip sonuç gönderirseniz daha sağlıklı olur.

(23 Tem '14, 18:09) SaRPaRDa SaRPaRDa's gravatar image

J2EE, size değil, metehan'a cevaben yazmıştım. Onun yorumları silinmiş, benimkiler buraya kaymış. Verdiği kod örneğindeki yanlışları göstermiştim. Böyle olunca size cevap gibi duruyor kusura bakmayın

(23 Tem '14, 23:02) Dkyc Dkyc's gravatar image

Şu şekil kodum class formEkleDepo public Urunler UrunYuzde(String urunAdi){

   EntityManagerFactory factory=Persistence.createEntityManagerFactory("testPU");
    EntityManager manager=factory.createEntityManager();
    String string = "SELECT u.yuzde FROM Urunler u WHERE u.urunAdi=:urunAdi";
    Query query=manager.createQuery(string);
    query.setParameter("urunAdi", urunAdi);
    Urunler yuzdem=(Urunler)query.getSingleResult();

manager.close();
    //factory.close();
    return yuzdem;

}

(24 Tem '14, 06:11) metehan metehan's gravatar image

Ve ben bunu şı şekilde almaya çalışıyorum

Urunler yuzde = formEkleDepo.findByUrunYuzde(urunAdi);

(24 Tem '14, 06:11) metehan metehan's gravatar image

Yani yukarıdaki ile şunu yapmaya çalıştım. Select kutusundan seçilen ürün adınının satırındaki yüzdeyi bulup onu değerini almak. Alacağım değer tek bir tane olduğu içinde getSingleResult(); kullandım. Ama şu yukarıdaki hikayeye bakarsanız hata almamam gerekmez mi?

(24 Tem '14, 06:23) metehan metehan's gravatar image

Cevabı güncellemekte fayda var ;)

(24 Tem '14, 07:29) Turgay Can Turgay%20Can's gravatar image

String string = "SELECT u.yuzde FROM Urunler u WHERE u.urunAdi=:urunAdi"; bu sorgu sana integer bir değer dönderir.

Urunler yuzdem=(Urunler)query.getSingleResult();

Sen burada Urunler isimli class'in içerisine atmişsin.

sorguyu

String string = "SELECT u FROM Urunler u WHERE u.urunAdi=:urunAdi";

olarak değiştir.

(24 Tem '14, 07:32) SaRPaRDa SaRPaRDa's gravatar image
12 yorumdan 5 tanesi gösteriliyor hepsini göster
Cevabınız
toggle preview

powered by BitNami OSQA