我正在使用一个生成对象的框架,Node他们已经分配了一个id.现在需要将它们转换为Titan顶点,并在框架中控制相同的ID(访问时node.id)
public long addNode(Node node) {
TitanVertex vertex = (TitanVertex) g.addVertex(null);
g.commit();
vertex.setProperty(ID, node.id);
vertex.setProperty(TYPE, node.type);
vertex.setProperty(VERSION, node.version);
vertex.setProperty(TIME, node.time);
vertex.setProperty(DATA, node.data);
...
Run Code Online (Sandbox Code Playgroud)
错误:
java.lang.IllegalArgumentException: Name is reserved: id
Run Code Online (Sandbox Code Playgroud)
但它似乎不允许它.我应该使用一些虚假财产来模仿二级身份证吗?泰坦有办法做到这一点吗?
谢谢!
很少有图形数据库实际上允许您设置元素标识符.无论您使用的是Neo4j,OrientDB,Titan等,它们都倾向于拥有自己的ID系统.TinkerGraph实际上是唯一允许ID分配的蓝图实现.
如果您想保留您的ID,那么您只需将其重命名为其他内容即可.而不是"id",也许你可以使用"iid".为了使事情更加透明,从编程的角度来看,您可以考虑使用IdGraph包装器,它允许您执行以下操作:
gremlin> base = TitanFactory.open('/tmp/titan-berkley')
==>titangraph[local:/tmp/titan-berkley]
gremlin> g = new IdGraph(base, true, false)
==>idgraph[titangraph[local:/tmp/titan-berkley]]
gremlin> g.addVertex(45)
==>v[45]
gremlin> g.v(45)
==>v[45]
Run Code Online (Sandbox Code Playgroud)
你可以看到IdGraph允许它看起来好像你正在分配元素id本身.在幕后,它实际上只是使用关键索引.
| 归档时间: |
|
| 查看次数: |
2560 次 |
| 最近记录: |