2016-03-20 20 views
0

Hazırda bekletme sonucu sorgusunda Birincil Anahtar veya Bir Varlık Kimliği alırken Boş İşaretçi Özel Durumunu alıyorum. Birincil Anahtar değeri sadece uzun bir değerdir. Benim varlık sınıfı:Hazır sonuçta boş gösterici boş değer elde edemiyor

@Entity 
@Table(name="sample") 
public class ccy{ 

@Id 
@column(name = "S_ID") 
private long id; 

2nd varibale and so on 

i hazırda sorgu yazmak o null işaretçi özel durumuna neden almak için, benim seçme sorgusu geçerli:

long ID = 0; 
String HQL = "select c.id from ccy c where c.name='sowndhar' "; 
Query query = session.createQuery(HQL); 
ID = (Long)query.uniqueResult(); //getting NullPointerException in this line 
return ID; 

herhangi bir öneriniz plz? Herhangi bir yardım için teşekkür ederiz

+0

Yığın izi nedir? –

+1

Açıkçası sorgu null olmalıdır. Yani, seansınızda bir sorun olup olmadığını kontrol etmek isteyebilirsiniz. Veya (hazırda beklemediğim gibi): Sorgunuzu ilk kez yürütmeniz gerekmiş olabilir mi? Bir sorgu oluşturduğunuzdan biraz şüpheli görünüyor; o zaman hemen sonucuna erişmek için deneyin. Ayrıca: ccy bir sınıf için gerçekten kötü bir isim. Büyük harfle başlamalıdır; ve: kısaltmayın. Kod okunmalıdır; ve böyle kısaltmalar çok fazla şey söylemez. – GhostCat

+0

Oturumunuzu oluştururken ve işlem başlatırken tam kodunuzu paylaşın. Oturum ile ilgili bir sorunun olduğundan şüpheliyim. Bir başka nokta da, bir sonucu olmayan bir sorgudan Benzersiz sonucu beklediğinizi fark ettim. Kodunuz çalıştıysa ve birden çok kayıt varsa, o zaman org.hibernate.NonUniqueResultException hatasını verecektir. Ayrıca daha önce belirtildiği gibi, adlandırma kuralı çok kafa karıştırıcı. – sAm

cevap

1

Kodunuzda bazı kötü Java uygulamaları var. Sözleşmeye göre sınıf isimleri büyük harfle başlar. Değişken isimler küçük harfle başlar. Sabitler tüm büyük harfleri kullanır. Follow the naming conventions.

Aşağıdaki kodda, değişkeninizin türünü null değerine izin verecek şekilde değiştiriyorum. Ayrıca, benzersiz bir sonuç talep ederken kesinlikle isteyeceğiniz bazı hata işlemlerini de ekliyorum.

Bu arada, session değişkeninizin boş olmadığından emin misiniz? Nasıl başardın?

Long id = null; // use the nullable Java type, not the primitive 

    String HQL = "select c.id from Ccy c where c.name=:name"; 

    try { 
     // always use parameter tokens in your query ... for security 
     Query query = session.createQuery(HQL) 
      .setParameter("name", name); 

     id = (Long)query.uniqueResult(); 
    } catch (NonUniqueResultException e) { 
     // what to do if there are multiple matches 
    } catch (NoResultException e) { 
     // what if there is no match 
    } 

    return id; 
+0

Teşekkürler .. Bu yardımcı olmalı .. – Sowndhar

+0

session sessionFactory'den alıyorum – Sowndhar

+0

Bunun null olmadığından emin misiniz? – carbontax

İlgili konular