簡體   English   中英

Neo4j OGM 無法處理 class my.class.Z9BD81329FEBF6EFE22788E03DZ 上的 ZonedDateTime 字段。 檢查映射

[英]Neo4j OGM Unable to process ZonedDateTime field on class my.class.Class. Check the mapping

我正在嘗試使用 Bolt 驅動程序將具有 java.time.ZonedDateTime 類型字段的@NodeEntity 持久化到我的 Neo4j 數據庫中,但我得到的只是這條警告消息:

org.neo4j.ogm.context.EntityGraphMapper:無法在 class nz.co.class.project.point.Point 上處理 AT。 檢查映射。

我正在使用以下庫:

  • 開放JDK 11
  • Spring 啟動 (2.2.0.RELEASE)
  • Spring 數據 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”package 中的所有 java 日期。

這是該問題的一個工作示例:

https://github.com/lcichero/neo4j-ogm-zoneddatetime.git

編輯:之前的答案不正確,對此感到抱歉。 我再次查看了我們的消息來源,因為您的評論讓我有些懷疑。

您需要顯式啟用類型轉換(這將在文檔中介紹)。 對於 Spring 引導應用程序,您可以在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上的來源。

支持的時間類型是DateTimeLocalTimeDateTimeLocalDateTimeDuration但你可以看到不是ZonedDateTime

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM