Merhaba arkadaşlar; Tablom aşağıdaki gibi. Ben şimdi JPA'a da nasıl yıla göre filtreleyip listeleyeceğim? Aşağıda yapmak istediğimi yazdım. Timestamp'a int değer gönderiyorum sonuç null tabi ki. Bu işlemi nasıl doğru şekilde gerçekleştirebilirim?

public List<Message> listForYear(int year) {
    Query query = entityManager
            .createQuery("select message from Message as message where message.created=:year");
    query.setParameter("year", year);
    return query.getResultList();
}

alt text

soruldu: 17 May '15, 08:49

sin's gravatar image

sin
700162536
cevap kabul oranı: 13%


Eclipselink v 2.4 ' kullanıyor isen EXTRACT metodu ile yapılabiliyor.

http://stackoverflow.com/questions/12641891/fetch-dates-by-month-or-year-stored-in-timestamp-using-jpa

Ayrıca between ile yapmayı deneyebilirsin.

örneğin yıl 2015 olsun: 2015-01-01 00:00:00 ile 2015.12.31 23:59:59 tarihi arasındaki kayıtları getirtebilirsin.

İyi çalışmalar

permanent link

cevaplandı: 17 May '15, 08:59

M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Müslüm ÖZTÜRK
10.7k103691
cevap kabul oranı: 28%

teşekkürler üstat cevap için. dediğin gibi EXTRACT kullandım ama hata verdi.

Query query = entityManager .createQuery("SELECT message FROM Message as message WHERE EXTRACT(YEAR, message.created)=:year"); query.setParameter("year", year); return query.getResultList();

Hata: Exception in thread "main" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Syntax error parsing [SELECT message FROM Message as message WHERE EXTRACT(YEAR, message.created)=:year].

(17 May '15, 10:55) sin sin's gravatar image

"SELECT message FROM Message as message " bu kısımdaki as keywordünü silip dener misin

(17 May '15, 14:35) Müslüm ÖZTÜRK M%C3%BCsl%C3%BCm%20%C3%96ZT%C3%9CRK's gravatar image

Şu şekilde deneyebilirsin.

  Query query = entityManager
                .createQuery("select message from Message as message where YEAR(message.created)=:year");
        query.setParameter("year", year);
        return query.getResultList();
permanent link

cevaplandı: 17 May '15, 09:13

SaRPaRDa's gravatar image

SaRPaRDa
5.0k213165
cevap kabul oranı: 27%

cevap için teşekkürler üstat. senin metodu deneyince de hata verdi.

Exception in thread "main" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Syntax error parsing [select message from Message as message where YEAR(message.created)=:year]. [45, 74] The expression is not a valid conditional expression.

(17 May '15, 11:11) sin sin's gravatar image

String olarak alip Like ile sorgularsaniz calisir. Parametreye verdiginiz yili da string olarak alin boylece Like istediginiz yil ile baslayanlari bulur ve Order By ile yila gore siralar.

Query query = em.createQuery("SELECT m FROM Message m
WHERE str(m.created) LIKE :year ORDER BY m.created");
query.setParameter("year", year + "%");
permanent link

cevaplandı: 17 May '15, 18:47

CemIkta's gravatar image

CemIkta ♦
19.9k29125190
cevap kabul oranı: 36%

Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,079
×144
×86
×41
×3

Soruldu: 17 May '15, 08:49

Görüntüleme: 515 kez

Son güncelleme: 17 May '15, 18:47

powered by BitNami OSQA