我们正在使用源链接将生成的 hibernate beans 包含在 eclipse 中的 j2ee web 项目中。我们有一个包含的项目,其中包括主项目之外的各种公用设施和服务等。
当我们将 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。
有什么想法吗?甚至调查途径也会比我们现在所拥有的更好。我们正在出局。
最佳答案
请使用时间戳。一些国家/地区有 DST (从我的角度来看,这是一个愚蠢的想法)。在这个国家/地区,日期可以存在、可以重复或从不存在。时间戳没有这样的异常(exception),并且作为 SSOT 更好。
顺便说一句:如果您有一个移动服务器(在飞机、汽车或潜艇上,有一天可能会更改时区)本地化的 TimestampZ 可能会更好。
关于java - @Version 在 Web 项目中中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41308649/