我创建了一个简单的SDN项目来从我的数据库中检索现有节点。在存储库中,我使用@Query注释定义了一个自定义查询,类似于
@Query(“MATCH(EMP:EMPLOYEE)WHERE EMP.empName = {0}返回EMP”)
public Employee findByName(String empName);
@RelationshipEntity(type = "HAS_ADDRESS")
class AddressRelationShip
{
@GraphId
Long id;
@StartNode
Employee employee = null;
@EndNode
Address address = null;
public AddressRelationShip(Employee employee, Address address)
{
this.employee = employee;
this.address = address;
}
}
@NodeEntity
@TypeAlias("EMPLOYEE")
public class Employee
{
@GraphId
Long id;
String empName = null;
@RelatedTo(type = "HAS_ADDRESS", direction = Direction.OUTGOING)
@Fetch
Set<Address> addresses;
public void addressEmplployee(Address address)
{
if (addresses == null)
{
addresses = new HashSet<Address>();
}
//AddressRelationShip addressRelationShip = new AddressRelationShip(this, address);
addresses.add(address);
}
public Set<Address> getAddresses()
{
return addresses;
}
public void setAddresses(Set<Address> addresses)
{
this.addresses = addresses;
}
public Long getId()
{
return id;
}
public void setId(Long id)
{
this.id = id;
}
public String getEmpName()
{
return empName;
}
public void setEmpName(String empName)
{
this.empName = empName;
}
}
使用此查询,执行时我收到以下错误消息:
不存在主SDN标签..(即以_开头的那个)
我在Google上搜索了该问题并尝试使用以下查询:
MATCH(EMP:EMPLOYEE:_EMPLOYEE)WHERE EMP.EmployeeId = {0}返回EMP
此查询会运行,但不会返回任何响应。
这里有一个重要的事情是我没有使用SDN创建现有节点(我用谷歌搜索并发现SDN添加了一些元数据,例如_到节点/关系)。
但是,如果我使用SDN创建(Employee) - [HAS_ADDRESS] - &gt;(ADDRESS)模式数据,则下面的查询工作正常:
MATCH(EMP:EMPLOYEE)WHERE EMP.empName = {0}返回EMP
在这种情况下,我发现另一个问题是它返回了地址数据,而我只是在查询中返回Employee。 我能够从Employee实体对象中获取地址。
关于上述问题的任何指示?
PS - Neo4j在独立服务器模式下运行。
此致 拉胡
答案 0 :(得分:0)
我可以通过以下步骤解决上述问题:
要使用现有数据运行SDN 3.x.x,需要进行以下数据迁移:
干杯,
的Rahul