在OrientDB类中存储LinkedSet引发无法序列化无效链接#-1:-1

问题描述 投票:0回答: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

如果有人能指出我在这里做错了,将不胜感激。

orientdb pyorient orientdb3.0
1个回答
0
投票

已解决问题。由于推荐项是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))

该更改解决了该问题,并且记录已成功插入

© www.soinside.com 2019 - 2024. All rights reserved.