当前位置: 首页 > 知识库问答 >
问题:

使用Spring Data Neo4j检索现有节点时的问题

须新
2023-03-14

我创建了一个简单的SDN项目来从我的数据库中检索现有节点。在存储库中,我使用@query注释定义了一个自定义查询,类似于

@query(“match(emp:employee)WHERE emp.empname={0}return emp”)

公共雇员findByName(字符串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标签。(即以_开头的一个)

我在谷歌上搜索了这个问题,并尝试使用以下查询:

匹配(EMP:employee:_employee),其中EMP.employeeID={0}返回EMP

MATCH(EMP:employee),其中EMP.empname={0}返回EMP

在本例中,我发现了另一个问题,即它还返回了地址数据,而我只在查询中返回Employee。我可以从Employee实体对象获得地址。

对上述问题有什么建议吗?

你好,拉胡尔

共有1个答案

柳越
2023-03-14

我可以通过以下步骤解决上述问题:

  1. 不存在主SDN标签。.(即以_)开头-在SDN 3.3.0中,对于现有节点,SDN需要一个额外的标签(在我的例子中是_Employee),因此需要进行数据迁移。在SDN 4.0中,似乎不再需要这样做,但我还没有尝试过4.0。
  2. 还返回地址数据,虽然我在查询中只返回Employee-删除Employee中设置的地址@fetch解决了这个问题,但是仍然返回了地址nodeIds。

要使用现有数据运行SDN3.x.x,需要进行以下数据迁移:

    null

拉胡尔

 类似资料:
  • 问题内容: 我正在尝试使用AFNetworking检索一些JSON数据。 我的服务器组件(PHP / ZendFramework)提供以下响应: 我尝试使用以下代码检索此json数据: 在模拟器中运行时,控制台显示以下输出: 任何关于我做错事情的提示都将不胜感激:)我尝试访问Twitter API,并且工作得很好… 问题答案: 这很令人困惑,我一直在努力寻找如何更好地正确记录/设计文档的方法,但是

  • 我需要使用AEM查询生成器检索父节点。 例如,这是我的问题: 此查询允许我检索以下元素: 使用此查询,可以检索放置在 /content/test/us/bar下的所有元素,这些元素包含8003170008212作为产品属性的值。 从前面的项目符号开始,我只需要返回父节点,例如: 我可以通过编程实现我的目标,迭代结果并使用3次getParent()方法。 我想知道:有没有一种方法可以通过查询生成器获

  • 我目前正在做一个优惠券项目。在处理我的facade类时,我遇到一个问题,通过使用外键从表中输入客户的ID来获取客户已购买的优惠券列表。 我使用的方法是: 优惠券类别: 调用方法: 我的SQL表: Coupon_vs_Customer表仅包含2行。它们都是其他表的外键。CustomerID连接到“Customers”表,而coupon_ID连接到表“Coupons” 正如您在上面看到的,ID为1的客

  • 我将一些数据存储为neo4j节点。此节点具有一些关联的C#类未描述的属性,因此在neo4jclient查询返回时不会自动映射回该类。 例如,这个C类: 存储在neo4j中,然后使用以下neo4jclient fluent代码检索: 将用名称和编号填充Node对象,但保留对CustomClass对象的空引用。 为了解决这个问题,我将CustomClass序列化为JSON字符串,并将其作为字符串属性存

  • 我想用python加密一个字符串(),并用节点解密字符串。下面是我写的。我不知道为什么它不起作用。 PyCrypto lib文档:http://pythonhosted.org//pycrypto/ 节点加密库文档:http://nodejs.org/api/crypto.html Python代码 JS代码

  • 我添加一个子节点到树视图中的当前父节点。但我的问题是,它将新节点添加到当前父节点的末尾,而不是添加在为true)的位置。 这是我的代码: 当然,、、和都是我的代码中的变量,对于任何for循环,它们都是不同的整数和字符串是树视图节点的名称,是固定字符串循环查找整个树,如果有与给定字符串相等的节点,则保留该节点,否则在树中插入一个空节点,然后递归执行。但为了简单起见,让我们: