我们正在使用源链接在eclipse中的j2ee web项目中包含生成的hibernate bean。我们有一个包含各种公用事业和服务的项目,包括主项目。
当我们将bean导入实用程序项目时,bean导入正常。他们有hibernate 4.3和hibernate-jpa 2.1 jar。但是,当我将相同的模型bean导入主项目时,而@Version注释会出现编译错误。它说:
JSR 220:Java Persistence API,9.1.17:版本属性仅支持以下类型:int,Integer,short,Short,long,Long,Timestamp。
代码是:
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "UPDT_TMSTMP", nullable = false)
@Version
private Date updateTimestamp;
正如我所说,当导入到一个简单的java项目时,它可以很好地工作,但是当导入到web模块中时(我们尝试了一些)它会出现这个错误。错误文本似乎是说我们不能将java.util.Date用于属性类型,但是,我们之前使用它时,导入到实用程序项目中时。
我们无法解释为什么实用项目与Web模块之间的区别。我们希望在Web模块中使用它,因为我们希望能够移动这些实用程序模块,而无需多次导入相同的模型bean。
有什么想法吗?即使是调查途径也会比现在更好。我们正在罢工。
答案 0 :(得分:2)
请使用时间戳。有些国家有DST(从我的pov一个愚蠢的想法)。在这个国家,日期可以存在,可以重复或从不存在。时间戳没有这样的例外,并且作为SSOT更好。
顺便说一句:如果你有一个移动的服务器(在飞机,汽车或潜艇,谁可能有一天改变时区),本地化的时间戳可能会更好。