如何设置LINKMAP属性

时间:2019-09-27 02:00:23

标签: orientdb

这是我尝试设置LINKMAP属性的方法,它不起作用。有人知道如何解决这个问题吗?

public static void setOrientLinkMapProperty(OVertex srcVertex, String propName, String linkMapKey, OVertex newPropVertex) {
        Map<String, ORID> currLinkMap = srcVertex.getProperty(propName);

        if (currLinkMap == null) currLinkMap = new HashMap<>();

        srcVertex.setProperty(propName, currLinkMap.put(linkMapKey, newPropVertex.getIdentity()), OType.LINKMAP);
        srcVertex.save();
    }

1 个答案:

答案 0 :(得分:0)

设置LINKMAP的纯SQL方法如下:

CREATE CLASS Example EXTENDS V
CREATE PROPERTY Example.name STRING
CREATE PROPERTY Example.map LINKMAP

CREATE VERTEX Example SET name = 'a'
CREATE VERTEX Example SET name = 'b'

UPDATE (SELECT FROM Example WHERE name = 'a') SET map = {'b':(SELECT FROM Example WHERE name = 'b')}

我不确定您的代码为何不起作用,这似乎是正确的。

也许尝试显式初始化HashMap

currLinkMap = new HashMap<String, ORID>(); // Explicitly initialized hashmap
currLinkMap.put(linkMapKey, newPropVertex.getIdentity());
srcVertex.setProperty(propName, currLinkMap, OType.LINKMAP);
srcVertex.save();

运行该代码时是否有任何错误?