我有一个代表一个人的实体,它有一个java.util.Date dateOfBirth
字段。当有人向我们发送此实体进行插入或更新时,我们要忽略该日期的时区:即使您访问日本,您的出生日期与您在纽约的时间相同,对?
问题是,当Date进入外部时,Java正在将日期解释为我们的时区。因此,如果有人从不同的时区发送,日期可能会向后或向前移动一天。有很多方法可以在Java代码中处理这个问题(它总是让我受到伤害),但我希望有一种方式可以让JPA / eclipselink以某种方式让我的生活变得更轻松。或许可以告诉它忽略时区和时间组件,即使实际的java类设置了这些字段?
如果JPA支持此功能,我该如何使用它?如果JPA不支持这一点,那么我可以用什么一般策略来解决这个问题?
答案 0 :(得分:0)
如果将出生日期的字段(在XML Schema中)定义为xsd:date,我无法想象如果观察到一些谨慎的话,这种转变是如何发生的。
Java代码应该是:
@XmlElement(name = "dob", required = true)
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar dob;
和解组后
System.out.println( orgs.getDob().getYear() + "-" +
orgs.getDob().getMonth() + "-" +
orgs.getDob().getDay() );
将为所有类型的值返回2002-10-10
<dob>2002-10-10-11:00</dob>
<dob>2002-10-10+11:00</dob>
<dob>2002-10-10+00:00</dob>
从CEST运行。