将LinkedSet存储在OrientDB类中会导致无法序列化无效链接#-1:-1

将LinkedSet存储在OrientDB类中会导致无法序列化无效链接#-1:-1,orientdb,pyorient,orientdb3.0,Orientdb,Pyorient,Orientdb3.0,我正在尝试使用python客户端在OrientDB的顶点中插入一条记录。 代码如下 print(recommendationCluster['recommendation']) for recommendation in recommendationCluster['recommendation']: item = menuitems.loadMenuItemWithId(str(recommendation),orientclient)

我正在尝试使用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']}}
这表明它已经获得了指向正确项目的链接,并且正在执行插入

但是记录创建失败,我在OrientDB服务器控制台中遇到以下异常

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

如果有人能指出我做错了什么,我将不胜感激。

解决了这个问题。由于recommenditem是一个链接集,因此要传递给数组的值应该是对链接对象的引用

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))
该更改修复了该问题,并成功插入了记录