持久化时间戳类型,仅日期,不包含时间
在我的数据库中,我只想保存数据而不保存时间。 如果我使用日历或日期类型,我可以写:
@Column(name = "CDATE")
@Temporal(TemporalType.DATE)
Calendar cDate; // or Date cDate
但如果我想使用时间戳数据类型,时间注释不使用时间戳类型:
@Column(name = "CDATE")
@Temporal(TemporalType.DATE)
Timestamp cDate;
我知道,使用时间戳日期类型并不可取,但根据我的架构,我需要它。我不希望每次都在 cDate 中将分钟、小时和其他单位设置为零。 有什么办法解决吗。 PS我使用开放的JPA和Oracle数据库。
In my database I want save only data without time.
If I use Calendar or Date type I can write:
@Column(name = "CDATE")
@Temporal(TemporalType.DATE)
Calendar cDate; // or Date cDate
but if I want use Timestamp data type, temporal annotation does not with timestamp type:
@Column(name = "CDATE")
@Temporal(TemporalType.DATE)
Timestamp cDate;
I know, that using Timestamp date type is not preferable, but I need it according to my architecture. And I dont want every time set zero values to minutes, houers and other units in my cDate.
Is there any way resolve it.
P.S. I use open JPA and Oracle database.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 Oracle 10 中,您只有 DATE 列类型,您可以通过在实体类上的列的注释中设置大小来确定类型(日期或时间戳)
对于日期,请使用此...
In Oracle 10, you only have the DATE column type, you determine the type, either date or timestamp by setting the size in the annotation for the column on your entity class
And for a date, use this...
如果您想保留没有时间分量的时间戳(我假设您只想将时间设置为 00:00:00),则需要将时间设置为零。
它并不是一个很好的编程示例,但经过一番搜索后,我只是将给定的日期转换为日历并将小时/分钟/秒/毫秒设置为零。
我使用它来删除查询的参数,以确保 Between 语句的“from”和“to”参数不包含时间元素。
据我所知,JPA 中没有任何注释可以满足您的要求。如果您设置的值没有实体上将保留的时间组件,我认为您会没事的。
If you want to persist a timestamp without a time component (I assume you just want the time to be 00:00:00) you need to set the time to zero.
It doesn't stand out as a great programming example but after some searching I just converted the given Date to a Calendar and set the hour/minute/second/millisecond to zero.
I use this to strip parameters for a query to make sure the 'from' and 'to' parameters for a between statement don't contain a time element.
There's no annotation in JPA that does what you want as far as I know. If you set the value without the time components on your entity that will be persisted I think you'll be fine.