2013-02-06 37 views
7

में समग्र कुंजी को कार्यान्वित करने के लिए मुझे यह सुनिश्चित करने की आवश्यकता है कि सभी नोड्स में एक से अधिक संपत्ति मानों का संयोजन अद्वितीय है। Neo4J में ऐसा कैसे करें।नियो 4 जे

http://docs.neo4j.org/chunked/milestone/transactions-unique-nodes.html पर उपलब्ध Neo4J दस्तावेज से, एक संपत्ति की विशिष्टता सुनिश्चित करना संभव है। लेकिन 2 या उससे अधिक के संयोजन के बारे में क्या।

उत्तर

4

आप

public Node getOrCreateUserWithUniqueFactory(final String firstName, final String lastname, GraphDatabaseService graphDb) { 
    UniqueFactory<Node> factory = new UniqueFactory.UniqueNodeFactory(graphDb, "users") { 
     @Override 
     protected void initialize(Node created, Map<String, Object> properties) { 
     created.setProperty("id", properties.get("id")); 

     created.setProperty("firstName", firstName); 
     created.setProperty("lastName", lastname); 
     } 
    }; 

    return factory.getOrCreate("id", firstName + "_" + lastname); 
    } 
+0

धन्यवाद वर्नर की कोशिश कर सकते! मैं इसे अपने कार्यान्वयन में तब तक उपयोग करने जा रहा हूं जब तक कि मुझे कुछ बेहतर तरीका न मिले। बहुत धन्यवाद! – Amresh

+0

बस सावधान रहें कि यह इस अर्थ में एक समग्र कुंजी नहीं बना रहा है कि आपके पास 2 अलग-अलग कुंजियां हैं जिन्हें आप देख सकते हैं, यह एक कुंजी बना रहा है जो कि पहले की इच्छित दो कुंजियों का संयोजन है। अनोखा फैक्ट्री वर्तमान में समग्र कुंजी के साथ अद्वितीय नोड्स बनाने का एक तरीका प्रदान नहीं करता है। – Nicholas

+0

धन्यवाद निकोलस! फर्स्टनाम, अंतिम नाम (और समग्र कुंजी का गठन करने वाले अन्य फ़ील्ड) कक्षाओं को पुनः प्राप्त करने के लिए क्लास.getDeclaredFields() विधियों का उपयोग करके प्रतिबिंब से आ रहे हैं और फिर फ़ील्ड मान लाने के लिए फ़ील्ड का उपयोग कर रहे हैं। चूंकि फ़ील्ड ऑर्डर जावा द्वारा गारेट नहीं किया गया है, यह मेरे लिए थोड़ा मुश्किल लग रहा है। – Amresh