如何检查JPA中两个日期的相等性

如何检查JPA中两个日期的相等性,jpa,jpql,Jpa,Jpql,我无法检查JPA中两个日期是否相等。在我添加出生日期之前,下面的比较很有效。我不确定我的JPQL是否正确: TypedQuery<Applicant> query = em.createQuery("select app " + "from Applicant app where " + "app.firstName = :firstName AND app.middleName = :middleName "

我无法检查JPA中两个日期是否相等。在我添加出生日期之前,下面的比较很有效。我不确定我的JPQL是否正确:

  TypedQuery<Applicant>  query = em.createQuery("select app "
                + "from Applicant app where "
                + "app.firstName = :firstName AND app.middleName = :middleName "
                + "AND app.lastName = :lastName" 
                +" AND app.dob = :dateOfBirth", Applicant.class);

            query.setParameter("firstName", searchableApplicant.getFirstName().trim());
            query.setParameter("middleName", searchableApplicant.getMiddleName().trim());
            query.setParameter("lastName", searchableApplicant.getLastName().trim());
           query.setParameter("dateOfBirth", searchableApplicant.getDob());   

JSF日期转换器默认为UTC时区。当使用UTC时区(如JSF默认情况下所做的那样)解释这些日期时,您将得到时间上的小时数,从而表示前一天

解决方案就在这里:

 public class Applicant implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "applicant_id")
private Integer applicantId;
@Size(max = 45)
@Column(name = "first_name")
private String firstName;
@Size(max = 45)
@Column(name = "middle_name")
private String middleName;
@Size(max = 45)
@Column(name = "last_name")
private String lastName;
@Size(max = 45)
@Column(name = "maiden_name")
private String maidenName;
@Column(name = "dob")
@Temporal(TemporalType.DATE)
private Date dob;