Liferay 6.2 是否允许使用新的 Java 8 日期类(例如 LocalDate)用作实体列字段的数据类型,以便在同一方面利用更多功能。我们需要使用
<column name="createDate" type="LocalDate" />
代替<column name="createDate" type="Date" />
是否有其他方法可以实现这一点?是否调整休眠版本,允许使用相同的版本,如果是,是否有效?
Liferay 6.2 是否允许使用新的 Java 8 日期类(例如 LocalDate)用作实体列字段的数据类型,以便在同一方面利用更多功能。我们需要使用
<column name="createDate" type="LocalDate" />
代替<column name="createDate" type="Date" />
是否有其他方法可以实现这一点?是否调整休眠版本,允许使用相同的版本,如果是,是否有效?
Liferay 6.2 开始兼容 Java 7,后来才兼容 Java 8,这主要是由于受支持的应用程序服务器的限制 - 这是一个很好的指标,表明 Java 8 类没有任何预见性。虽然它们可能有效,但您可能会遇到未经测试的领域。我既不是说它也不是它——尽管我怀疑你已经尝试过并且当你在这里问这个问题时遇到了问题。
正如 Guivani Grifante 所说,在 Liferay 中升级 Hibernate 很可能会导致一团糟,如果你准备好这样做,我宁愿要求升级到 Liferay 7(尽管我没有仔细检查它的 Hibernate 版本) .
实现这种采用的另一种方法是使用旧Date
类型,只需添加一个转换getLocalDate()
,然后setLocalDate()
自己YourModelImpl
实现转换。是的,有点奇怪,但可能是最快的修复方法,无需立即升级。但是,如果您使用 6.2 CE,请注意不会有更多更新,您应该尽快迁移到 7。如果您在 EE 上,您将获得一段时间的支持。
如果您将带有 Java 8 的 portlet 部署到 Liferay 中,这不是唯一的问题。如果您的代码是使用 Java 8 编译的,并且包含由服务构建器生成的远程服务,那么在部署此类 portlet 时会出现错误。这是因为 Liferay 使用 Jodd api 来分析字节码并获取参数名称以显示在 /api/jsonws Hibernate 5.x 支持新的日期 api,但是,如果不破坏 Liferay 6.2,升级的可能性很小。