我試圖在特定的日期間隔內獲取所有MainIntervals。但我總是空。JPQL BETWEEN日期間隔
這裏是JPA實體
@Table(name="MAIN_INTERVAL")
@NamedQueries({
@NamedQuery(name = MainInterval.FIND_ALL, query = " select m from MainInterval m"),
@NamedQuery(name = MainInterval.FIND_BETWEEN,
query = "select m from MainInterval m where m.mainIntervalStart
BETWEEN :startDate AND :endDate
AND m.mainIntervalEnd BETWEEN :startDate AND :endDate"
) })
public class MainInterval implements Serializable {
public static final String FIND_ALL = "MainInterval.findAll";
public static final String FIND_BETWEEN = "MainInterval.findBetween";
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="MAIN_INTERVAL_ID")
private Long id;
@Column(name="MAIN_INTERVAL_START")
@Temporal(javax.persistence.TemporalType.DATE)
private Date mainIntervalStart;
@Column(name="MAIN_INTERVAL_END")
@Temporal(javax.persistence.TemporalType.DATE)
private Date mainIntervalEnd; }
而在EJB SessionBeans我的方法:
public List<MainInterval> findMainIntervalsBetween(Date startDate, Date endDate){
List<MainInterval> resultList = em.createNamedQuery(MainInterval.FIND_BETWEEN, MainInterval.class)
.setParameter("startDate", startDate, TemporalType.DATE).setParameter("endDate", endDate, TemporalType.DATE).getResultList();
return resultList;
}
但是,當我與CDI把它從JSF的resultList總是空。雖然我有一些滿足startDate和endDate之間條件的MainIntervals。
我會非常感謝每個答案或鏈接的教程。 此致敬禮!
它真的是空嗎?我會理解它是否爲空,但不爲空。 –
嗨JB Nizet。那麼我現在再測試它。你是對的。它不爲空。但是當我使用例如findMainIntervalsBetween(10.05.2012,20.05.2012)調用該方法時,我得不到任何東西,儘管在數據庫中我有MainIntervals([01.05.2012,31.05.2012],[01.05.2012,01.08.2012 ] Date pattern pattern =「dd/MM/yyyy」。任何想法? – Laith
接受答案是很好的,因爲它(包括後面的評論)看起來非常合適,我建議你也應該注意。 –