服务构建器是否支持使用Java 8 Date类?

时间:2017-08-17 07:03:25

标签: java-8 liferay-6 liferay-6.2 liferay-service-builder

liferay 6.2是否允许使用新的Java 8日期类(如LocalDate)作为实体列字段的数据类型,以便在其上使用更多功能。我们需要使用

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

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

是否有其他方法可以实现这一目标?调整hibernate版本,允许使用相同的,如果是这样,是否有效?

2 个答案:

答案 0 :(得分:2)

如果将带有Java 8的portlet部署到Liferay中,这不是唯一的问题。如果您的代码是使用Java 8编译的并且包含服务构建器生成的远程服务,则在部署此类portlet时会出现错误。这是因为Liferay使用Jodd api来分析字节码并获取参数名称以显示在/ api / jsonws中 Hibernate 5.x支持新的日期api,但是,没有破坏Liferay 6.2的情况下升级的可能性很小。

答案 1 :(得分: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,您将获得一段时间的支持。