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

时间:2014-08-28 23:07:47

标签: jpa jpql

我无法检查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());   

申请人对象属性:

 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;

1 个答案:

答案 0 :(得分:0)

JSF日期转换器默认为UTC时区。当使用UTC时区解析这些日期时(默认为JSF),您将获得数小时的回溯,因此前一天将被表示。

解决方案就在这里: JSF page reflects Date incorrectly - 1 Day shifted