【发布时间】:2017-05-09 14:01:58
【问题描述】:
我们正在使用源链接将生成的休眠 bean 包含在 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 的情况下移动这些实用程序模块。
有什么想法吗?即使是调查途径也会比我们现在拥有的更好。我们正在罢工。
【问题讨论】:
-
您确定这是编译错误,而不是来自 Eclipse 插件(如 JPA 插件)的错误吗? Java 编译器并不关心带有注解的字段的类型。所以很可能错误来自 JPA 集成插件,这可能是由错误配置的构建路径引起的(即,如果 JPA 设置为其他项目中的旧版本)。
-
您是否尝试使用 java.sql.Date 而不是 java.util.Date?您还可以检查您的数据库是否配置为以毫秒精度存储时间戳。
-
也可以尝试使用java.sql.Timestamp
标签: java eclipse hibernate jpa jakarta-ee