为了账号安全,请及时绑定邮箱和手机立即绑定

Neo4j OGM 无法处理类 my.class.Class 上的 ZonedDateTime 字段

Neo4j OGM 无法处理类 my.class.Class 上的 ZonedDateTime 字段

慕容708150 2023-12-13 14:31:00
我正在尝试使用 Bolt 驱动程序将具有 java.time.ZonedDateTime 类型字段的 @NodeEntity 持久保存到我的 Neo4j 数据库中,但我得到的只是以下警告消息:org.neo4j.ogm.context.EntityGraphMapper:无法处理 nz.co.class.project.point.Point 类上的 AT。检查映射。我正在使用以下库:OpenJDK 11Spring Boot(2.2.0.RELEASE)Spring Data Neo4j (5.2.0.RELEASE)Neo4j (3.5.12)Neo4j-OGM (3.2.1)Neo4j-OGM-螺栓驱动程序 (3.2.1)Neo4j-OG-Bolt-Native-Types (3.2.1)结果是节点实体保存在 Neo4j 数据库中,但没有 ZonedDateTime 属性。难道我做错了什么?据我了解,OGM 版本 3.2.X 支持“java.time”包中的所有 java 日期。这是该问题的一个工作示例:https://github.com/lcichero/neo4j-ogm-zoneddatetime.git
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

编辑:之前的答案不正确,对此表示抱歉。我再次查看了我们的消息来源,因为你的评论给了我一些疑问。

您需要显式启用类型转换(这将在文档中介绍)。对于 Spring Boot 应用程序,您可以通过application.properties添加来完成此操作

spring.data.neo4j.use-native-types=true

你会看到类似的东西

Request: UNWIND {rows} as row CREATE (n:`Point`) SET n=row.props RETURN row.nodeRef as ref, ID(n) as id, {type} as type with params {type=node, rows=[{nodeRef=-2, props={x=14.5, y=43.5, at=2018-06-23T00:00+12:00}}]}

如果将org.neo4j.ogm的日志记录设置为DEBUG

对于 Neo4j-OGM 的配置是

Configuration configuration = new Configuration.Builder()
    .uri("bolt://neo4j:password@localhost")
    .useNativeTypes()
    .build()

如文档中所述。

为什么必须明确启用此功能?因为我们不会通过存储“新”本机类型而不是转换后的值来破坏并能够读取数据库中 Neo4j-OGM 3.2 之前的用户数据。

旧答案

我们还没有发布 3.2。文档,因此我链接到GitHub上的源代码。

支持的时间类型有DateTimeLocalTimeDateTime,LocalDateTimeDuration但正如您所看到的 not ZonedDateTime


查看完整回答
反对 回复 2023-12-13
  • 1 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信