日期时间的Java/Hibernate odata过滤器不起作用

2020-09-14 15:20发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们! ...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家们!

在我的组织中,我们开发了一个Java应用程序来公开odata服务,我们使用的一些技术是:

  • Spring Boot
  • Apache Olingo
  • JPA/休眠状态

一切似乎都可以正常工作,我们可以使用odatas并满足我们的要求,但是在按日期执行过滤时发现了一个问题。

查询:

WorkOrderHeaders?$ filter =(StartDate ge datetime'2018-01-16T05:00:00')

结果:

QueryException:意外字符:'{'[从WorkOrderHeader E1 WHERE中选择E1(E1.startDate> = {ts'2018-01-16 05:00:00.000'})]

我认为这是Olingo的问题,所以我进行了研究并找到了这篇文章: https://issues.apache.org/jira/browse/OLINGO-240?jql=text%20~%20%22datetime% 20filter%22

它基本上说:"此问题特定于休眠,目前在Olingo JPA处理器中没有针对休眠的特定处理。"

谷歌搜索休眠状态,我发现了这一点: https://hibernate。 atlassian.net/browse/HHH-8653

它提到:"问题的根源似乎是Hibernate生成的语法不包括对时态文字的支持"

因此,显然休眠状态不提供对日期文字的支持。

  • 有什么想法如何解决这个问题?
  • 我是否需要更改JPA实施?

ps。 我已经使用相同的技术构建了一个小项目,但是考虑使用eclipselink而不是hibernate,并且可以与日期过滤器一起很好地工作。

(12.2 kB)
4条回答
樱桃小丸子0093
2020-09-14 15:40

伊万(Hi Ivan)

考虑到已使其与EclipseLink一起使用,是否有任何理由应使用hibernate代替?

BTW:SAP已提供了库" SDK for Services ",它与新的云铸造厂" 应用程序编程模型"。 使用这两种技术,您都可以基于数据库实体创建自己的OData服务,并且可以自动化并简化开发过程,而无需牺牲灵活性。 我建议也研究一下。 有一个很好的博客,介绍如何使用此技术创建示例。

希望有帮助。

关于,
伊万

一周热门 更多>