I have a query in my entity class and am using JPA annotations. My BETWEEN statement returns results, but I cannot seem to tag on this conditional "WHERE e.feature = :feature" which references a String value in another table.
@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;
...
}
In my BusinessObject class I have this query where em is the EntityManager instance:
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
The following JPQL returns entries fine:
SELECT e FROM Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate
It is when I start trying to add the Feature conditional that I am not getting any results from the database:
> @NamedQuery(name = "Events.getEventsBetweenDates", query = "SELECT e
> from Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate" AND
> e.feature = :feature)
This query was the one that returns the NullPointerException when called from the BusinessObject query method:
SELECT e FROM Events e WHERE e.timeOfEntry BETWEEN :startDate AND :endDate AND e.feature = :feature
any Ideas? Thanks