我在Java项目中使用 Neo4J 2.0 beta 。我需要知道标记节点的正确做法。例如,如果我需要将许多节点标记为“用户”节点,并且我还需要确保只存在一个具有该用户ID的节点,则以下代码是正确的:
我班上的某个地方我定义了标签
public final static Label USER = DynamicLabel.label("User");
通过使用唯一ID创建唯一节点,如果节点是新节点,我会附加一个标签,例如:解释该节点是user
。
GraphDatabaseService graphDb;
try (Transaction tx = graphDb.beginTx()) {
user_factory = new UniqueFactory.UniqueNodeFactory(graphDb, "users") {
@Override
protected void initialize(Node created, Map<String, Object> properties) {
created.setProperty("id", properties.get("id"));
created.addLabel(USER);//load of static label
};
tx.success();
}
然后,在课堂的某个地方:
String user_id = "an unique id";
UniqueFactory<Node> user_factory = ...// Initied by the code above.
try (Transaction tx = graphDB().beginTx()){
Node node = user_factory.getOrCreate("id", user_id);
tx.success();
}
以前的代码是否正确或UniqueFactory
中的标签使用是否未被推荐?
PS:我问这个是因为我们在标签检索方面遇到了很多问题。