无法将java.util.Date与Oracle中的Timestamp进行比较

时间:2013-07-29 15:27:42

标签: spring hibernate oracle11g

我无法将java.util.Data与Oracle Timestamp

进行比较

存储在地址表中的日期类似于29-JUL-13 07.15.57.529000000 PM 我的地址类如下所示

@Entity
@org.hibernate.annotations.Entity(dynamicUpdate = true)
@Table(name = "address")
public class Address {

@Id
@GeneratedValue(generator = "assigned-by-code")
@GenericGenerator(name = "assigned-by-code", strategy = "assigned")
@Column(name = "id")
private String id;


@Type(type = "timestamp")
@Column(name = "lastaccesstimestamp")
private Date lastAccessTimestamp;

getter and setter

}


@Query("from Address a where a.associationId =:associationId and a.lastAccessTimestamp >=:lastAccessTimestamp")
List<Address> findLatestUpdatedAddresses(
        @Param("lastAccessTimestamp") Date lastAccessTimestamp,
        @Param("associationId") String associationId);

findlatestUpdateAddress方法中的lastAccessTimestamp是Calendar.getInstance()。getTime()(例如Mon Jul 29 10:10:09 IST 2013)。

它给出了月,日和年压缩的正确结果,但是当分钟,秒或小时发生变化时,它没有给出正确的结果。

例如,如果lastAccessTimestamp是星期一7月29日10:10:09 IST 2013和DB日期是30-JUL-13 07.15.57.529000000 PM它将返回结果

但如果lasteAccessTimestamp是IST 2013年7月30日星期一07:09:09它没有给出任何结果我认为小时分钟和第二部分不被认为是压缩。

简而言之,月份日期和年份压缩工作正常,但是对于分钟秒和小时,它不起作用。

即使有任何替代解决方案被接受,任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

请尝试替换你的:

@Type(type = "timestamp")

@Temporal(TemporalType.TIMESTAMP)

此注释将告诉hibernate在处理对象映射时包含小时/分钟/秒。