java - @Version 在 Web 项目中中断

标签 java eclipse hibernate jpa jakarta-ee

我们正在使用源链接将生成的 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/

相关文章:

java - 在 Hibernate 中限制成员集合的大小

java - 在 Gradle 中使用 DBDeploy 并使用 hibernate 作为 ORM

java - zip 文件中的文件名太长 java

eclipse - 更新 eclipse 的问题

java - Android 2.3 中使用 ActionBar 和支持库 v7 强制关闭

java - 通过 xrdp 登录时清除 LD_LIBRARY_PATH

java - 为什么 hibernate 将 HibernateException 更改为(未检查的)RuntimeException

java - 将 JSONObject 获取到字符串数组值时出现问题

java - Jackson 无法识别的字段 "media:recent"

java - 向套接字发送数据时的 ObjectOutputStream 问题