这是我尝试设置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();
}
答案 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();
运行该代码时是否有任何错误?