0

我曾经使用 SDN 3.3.0 做了一个 POC。

目前,我正在尝试在 SDN 4.0.0.M1 上进行 POC。我能够创建一个正在运行的项目,其中查询数据库的存储库存在于应用程序端。但它的性能并不是那么好。

我正在尝试创建一个可以在服务器内作为插件运行的扩展。但这里的问题是 SDN API 在 3.3.0 和 4.0.0.M1 之间发生了很大变化。

我目前坚持在扩展中公开我的域对象。在 3.3.0 中,我们有 SpringPluginInitializer 可以用于相同但在 4.0 中找不到类似的东西。任何人都可以提供有关如何使用 SDN 4.0 配置插件的任何指示或教程吗?

PFB 域对象和存储库:

package org.neo4j.domain;

import org.neo4j.ogm.annotation.EndNode;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.RelationshipEntity;
import org.neo4j.ogm.annotation.StartNode;

@RelationshipEntity(type = "HAS_ADDRESS")
public class EmployeeToAddressRelationship {

    @GraphId
    private Long id;

    @StartNode  private Employee employee;
    @EndNode  private Address address;
    //@RelationshipType private relationshipType;

    public EmployeeToAddressRelationship()
    {
        super();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
    public Employee getEmployee() {
        return employee;
    }
    public void setEmployee(Employee employee) {
        this.employee = employee;
    }
    public Address getAddresss() {
        return address;
    }
    public void setAddresss(Address address) {
        this.address = address;
    }


}




package org.neo4j.domain;

import org.springframework.data.annotation.TypeAlias;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;

@NodeEntity
@TypeAlias("ADDRESS")
public class Address {

@GraphId
private Long id;

public String property1;
public String property2;
public String property3;
public String property4;


Address(){}

//getters and setters for all properties

}







package org.neo4j.repository;

import java.util.Map;
import org.neo4j.domain.Employee2Result;
import org.neo4j.domain.Address;
import org.neo4j.domain.Employee;
import org.neo4j.domain.EmployeeToAddressRelationship;
import org.springframework.data.neo4j.annotation.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface EmployeeRepository extends CrudRepository<Employee, String> {

@Query("MATCH p=(node1:NODE1)<-[rel1:REL1]-(node2:NODE2)<-[rel2:REL2]-(node3:NODE3)<-[rel3:REL3]-(node4:NODE4)<-[empRel:REL4]-(emp:EMPLOYEE) WHERE node1.property1={0} AND node2.property2={1} AND node3.property3={2} RETURN emp ORDER BY emp.timestamp DESC")
public Iterable<Employee> method1(String property1, String property2, String property3);

@Query("MATCH p=(node1:NODE1)<-[rel1:REL1]-(node2:NODE2)<-[rel2:REL2]-(node3:NODE3)<-[rel3:REL3]-(node4:NODE4)<-[empRel:REL4]-(emp:EMPLOYEE)-[addressRel:HAS_ADDRESS]->(address:ADDRESS) WHERE node1.property1={0} AND node2.property2={1} AND node3.property3={2} RETURN emp,addressRel,address ORDER BY emp.timestamp DESC")
public Iterable<Employee2Result> method2(String property1, String property2, String property3);

}




package org.neo4j.domain;

import java.util.Set;
import org.springframework.data.annotation.TypeAlias;
import  org.neo4j.ogm.annotation.GraphId;
import  org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
import org.neo4j.ogm.annotation.typeconversion.DateString;
import org.neo4j.ogm.annotation.typeconversion.NumberString;

@NodeEntity(label="EMPLOYEE")
public class Employee {

@GraphId
private Long id;

public String property1;

public String property2;

public String property3;

public String property4;

@Relationship(type = "HAS_ADDRESS", direction = Relationship.UNDIRECTED)
Set<Address> address;


public Searchspace()
{}

//getters and setters for all properties

}






package org.neo4j.domain;

import org.neo4j.ogm.annotation.ResultColumn;
import org.springframework.data.neo4j.annotation.QueryResult;

@QueryResult
public class Employee2Result {

@ResultColumn("emp")
Employee emp;

@ResultColumn("address")
Address address;

@ResultColumn("addressRel")
EmployeeToAddressRelationship addressRel;

//getters and setters for all properties


}

PS - 知道什么时候发布 SDN 4.0 GA 吗?

提前致谢,

拉胡尔

4

0 回答 0