0
我在我的实体类中有一个查询,并且正在使用JPA注释。我的BETWEEN语句返回结果,但我似乎无法标记此条件的“WHERE e.feature =:feature”,它引用另一个表中的字符串值。向JPQL BETWEEN语句添加条件
@Entity
@Table(name = "EVENTS")
public class Events implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long eventsPk;
@ManyToOne
@JoinColumn(name = "USERS")
private Users user;
@ManyToOne
@JoinColumn(name = "FEATURES")
private Features feature;
@Column(name = "TIME_OF_ENTRY", unique = false)
@Temporal(TemporalType.TIMESTAMP)
private Date timeOfEntry;
...
}
在我BusinessObject的I类有这个疑问,其中EM是EntityManager实例:
public class EventsBusinessObject {
private static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(EventsBusinessObject.class);
public static List<Events> getEventsBetweenDates(EntityManager em, Date startDate, Date endDate, String feature) {
List<Events> events = null;
try {
events = em.createQuery(
"SELECT e FROM Events e WHERE e.timeOfEntry
BETWEEN :startDate AND :endDate
AND SELECT Feature f FROM Features WHERE f.feature = :feature")
.setParameter("startDate", startDate, TemporalType.TIMESTAMP)
.setParameter("endDate", endDate, TemporalType.TIMESTAMP)
.setParameter("feature", feature)
.getResultList();
} catch (NoResultException e) {
logger.error("NoResultException for EventsBusinessObject.getEventsBetweenDates");
} catch (Exception e) {
logger.error("unknown exception for EventsBusinessObject.getEventsBetweenDates");
}
return events;
}//end getEventsBetweenDates method
以下JPQL返回条目罚款:
SELECT e FROM Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate
这是当我开始尝试添加特征条件,我没有从数据库中得到任何结果:
> @NamedQuery(name = "Events.getEventsBetweenDates", query = "SELECT e
> from Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate" AND
> e.feature = :feature)
该查询是从BusinessObject的查询方法调用时返回空指针异常的一个:
SELECT e FROM Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate AND e.feature = :feature
什么想法? 谢谢
定义“无法得到查询工作” ......你得到一个异常,或者它只是没有返回正确的结果?另外,在你的例子中,你没有使用指定的查询。使用'em.createNamedQuery(“Events.getEventsBetweenDates”)' – DannyMo
好的,请包含异常堆栈跟踪并指出代码中抛出异常的位置。 – DannyMo
做em.createNamedQuery过去从未为我工作。我想这些都不是命名查询。我会坚持要求他们JPQL查询,然后 – joshpt