【发布时间】:2015-06-22 23:16:11
【问题描述】:
我试图在某个日期间隔内获取所有 MainIntervals。但我总是为空。
这里是 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 调用它时,结果列表始终为空。虽然我有一些 MainIntervals 满足 startDate 和 endDate 之间的条件。
我将非常感谢每个答案或教程链接。 此致!
【问题讨论】:
-
真的为空吗?我会理解它是否为空,但不为空。
-
嗨,JB 尼泽特。好吧,我现在再次测试它。你说的对。它是空的而不是空的。但是,当我使用例如 findMainIntervalsBetween(10.05.2012, 20.05.2012) 调用该方法时,尽管在数据库中我有 MainIntervals ([01.05.2012, 31.05.2012], [01.05.2012, 01.08.2012 ] 日期模式模式="dd/MM/yyyy"。有什么想法吗?
-
很高兴你能接受这个答案,因为它(包括后面的评论)似乎很合适,我建议你也应该投票。
标签: jpql