2011-03-18 30 views
29

Bu SQL deyimini JPQL eşdeğerine dönüştürmek istiyorum.JPQL Tarih ifadesi arasındaki SELECT SELECT

SELECT * FROM events 
WHERE events_date BETWEEN '2011-01-01' AND '2011-03-31'; 

Bu, bilgileri events tablosundan doğru şekilde alır. Benim Events varlık

@Column(name = "events_date") 
    @Temporal(TemporalType.DATE) 
    private Date eventsDate; 

yılında

Şimdiye kadar bu var ama çalışmıyor budur.

public List<Events> findAllEvents(Date startDate, Date endDate) {  
    List<Events> allEvents = entityManager.createQuery(
    "SELECT e FROM Events e WHERE t.eventsDate BETWEEN :startDate AND :endDate") 
    .setParameter("startDate", startDate, TemporalType.DATE) 
    .setParameter("endDate", endDate, TemporalType.DATE) 
    .getResultList(); 
    return allEvents ; 
} 

Neyi yanlış yapıyorum? Teşekkürler.

cevap

57

(e.eventsDate ile t.eventsDate değiştirin) bu sorguyu deneyin: Bu sorgu, söz konusu sorgunun farklıdır nasıl

SELECT e FROM Events e WHERE e.eventsDate BETWEEN :startDate AND :endDate 
3
public List<Student> findStudentByReports(Date startDate, Date endDate) { 
    System.out.println("call findStudentMethd******************with this pattern" 
        + startDate 
        + endDate 
        + "*********************************************"); 

    return em 
      .createQuery(
        "' select attendence from Attendence attendence where attendence.admissionDate BETWEEN : startDate '' AND endDate ''" 
          + "'") 
      .setParameter("startDate", startDate, TemporalType.DATE) 
      .setParameter("endDate", endDate, TemporalType.DATE) 
      .getResultList(); 

} 
+0

ben alamadım. Ayrıca, endDate'den önce : olmamalı mı? Ve neden startDate sonra ve son endDate sonra 2 tek tırnak var? – Ievgen