मेरे पास एक neo4j डेटाबेस है, और डेटाबेस में नोड्स में से एक में निम्न है:

<id>:91671 coordinates: point({srid:7203, x:-4.327197062, y:52.03857589}) description: "home"

मैं जावा में इसका एक मॉडल बनाने की कोशिश कर रहा हूं - इसलिए:

import org.neo4j.ogm.annotation.GeneratedValue;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.types.spatial.CartesianPoint2d;

@NodeEntity (label="Location")
public class Location
{
    @Id @GeneratedValue
    private Long id;

    public Long getId() 
    {
        return id;
    }  

    @Property(name="description")
    String description;

    @Property(name="coordinates")
    CartesianPoint2d coordinates; // problem is here      
}

जब मैं ऑब्जेक्ट में नोड को मैप करने के लिए ओजीएम का उपयोग करने का प्रयास करता हूं, तो मुझे निम्न त्रुटि मिलती है:

org.neo4j.ogm.exception.core.InvalidPropertyFieldException: 'स्थान#निर्देशांक' संपत्ति के रूप में स्थायी नहीं है लेकिन क्षणिक के रूप में चिह्नित नहीं किया गया है।

मैंने coordinates के लिए कई अन्य प्रकार की कोशिश की है, और कनवर्टर का उपयोग करने का भी प्रयास किया है (ओजीएम दस्तावेज़ीकरण - 3.10.2 देखें); लेकिन हर बार मुझे एक त्रुटि मिलती है।

इस मैपिंग को srid 7203 के neo4j पॉइंट और जावा में एक प्रकार के बीच करने का सही तरीका क्या है? यह क्यों कहता है कि यह स्थायी नहीं है, और मेरे विकल्प क्या हैं?

ध्यान दें: मुझे पता है कि मेरे अंक शायद srid 4326 होने चाहिए क्योंकि मैं अक्षांश और देशांतर के बारे में बात कर रहा हूं - मुझे यकीन नहीं है कि वे क्यों नहीं हैं - लेकिन आइए इस समस्या को अभी के लिए हल करते हैं

0
simonalexander2005 22 जिंदा 2020, 14:18

1 उत्तर

सबसे बढ़िया उत्तर

कृपया सुनिश्चित करें कि आपने ओजीएम गुणों में मूल प्रकारों को सक्षम किया है:

use-native-types=true

या विन्यास बिल्डर में

Configuration configuration = new Configuration.Builder()
        .uri("bolt://neo4j:password@localhost")
        .useNativeTypes()   //this enables using the spatial and temporal data 
        .build()            //  types in ogm 

और अपने पूजो में ग्राफ़ में मौजूद डेटा प्रकार के आधार पर CartesianPoint2d/CartesianPoint3d या GeographicPoint2d/GeographicPoint3d का उपयोग करें।

@Property(name="coordinates")
CartesianPoint2d coordinates;
1
TheTeacher 24 जिंदा 2020, 12:58