服务生成器是否支持使用 Java 8 日期 类?

Does service builder support using Java 8 Date classes?

liferay 6.2 是否允许使用新的 Java 8 日期 类 例如 LocalDate 作为实体列字段的数据类型,以便利用 same.We 上的更多功能需要使用

<column name="createDate" type="LocalDate" />

而不是<column name="createDate" type="Date" />

是否有其他方法可以实现此目的?是否调整休眠版本,允许在同一版本上使用,如果是,是否有效?

如果您使用 Java 8 将 portlet 部署到 Liferay 中,这不是唯一的问题。如果您的代码是使用 Java 8 编译的并且包含由服务生成器生成的远程服务,那么在部署此类 portlet 时您将遇到错误。这是因为 Liferay 使用 Jodd api 来分析字节码并获取要在 /api/jsonws 中显示的参数名称 Hibernate 5.x 支持新日期 api,但是,不中断 Liferay 6.2 升级的机会很小。

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,您将获得一段时间的支持。