簡體   English   中英

在 OrientDB 類中存儲 LinkedSet 會拋出 Impossible to serialize invalid link #-1:-1

[英]Storing LinkedSet in OrientDB class throws Impossible to serialize invalid link #-1:-1

我正在嘗試使用 python 客戶端在 OrientDB 的頂點中插入一條記錄。 代碼如下

       print(recommendationCluster['recommendation'])
        for recommendation in recommendationCluster['recommendation']:
            item = menuitems.loadMenuItemWithId(str(recommendation),orientclient)
            items.append(item._rid)
        print("Creating cluster of ", items)            
        cluster['recommendeditems'] = items
        dbData = {}
        dbData['@RecommendationCluster']=cluster
        print("Storing recommendation cluster ", dbData)        
        newCluster = orientclient.record_create(-1, dbData)

在控制台中我看到消息

Storing recommendation cluster  {'@RecommendationCluster': {'recommendeditems': ['#126:2', '#124:8']}}

這表明它已獲得正確項目的鏈接並正在執行插入。

但是 record_create 失敗了,我在 OrientDB 服務器控制台中得到以下異常

com.orientechnologies.orient.core.exception.ODatabaseException: Impossible to serialize invalid link #-1:-1

如果有人能指出我在這里做錯了什么,將不勝感激。

解決了這個問題。 由於 recommenditem 是一個 LinkSet,要傳遞給數組的值應該是對 Link 對象的引用

for recommendation in recommendationCluster['recommendation']:
            item = menuitems.loadMenuItemWithId(str(recommendation),orientclient)
            items.append(item._rid)

必須改成

for recommendation in recommendationCluster['recommendation']:
            item = menuitems.loadMenuItemWithId(str(recommendation),orientclient)
            items.append(pyorient.OrientRecordLink(item._rid))

該更改解決了問題並且記錄已成功插入

暫無
暫無

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

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