Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j使用Spring数据进行即时/延迟加载_Spring_Neo4j_Spring Data - Fatal编程技术网

Neo4j使用Spring数据进行即时/延迟加载

Neo4j使用Spring数据进行即时/延迟加载,spring,neo4j,spring-data,Spring,Neo4j,Spring Data,我正在调查Neo4j,有一个关于对象渴望/延迟加载的问题。假设我有一个带有hasSet(带有getter/setter)的类台车。如果我这样做: Trolley t = new Trolley(...); // create empty trolley t.addItem(f); // add one item to the trolley t.persist(); // persist the object 然后,我根据nodeId找到了台车: repo.findOne(xxx); //

我正在调查Neo4j,有一个关于对象渴望/延迟加载的问题。假设我有一个带有has
Set
(带有getter/setter)的类台车。如果我这样做:

Trolley t = new Trolley(...); // create empty trolley
t.addItem(f);  // add one item to the trolley
t.persist(); // persist the object 
然后,我根据nodeId找到了台车:

repo.findOne(xxx); // returns the trolley successfully
当我做以下事情时:

trolley.getItems().size() 
这是空的。我想这是我们想要的行为。是否有类似于JPA的机制,其中会话/tx打开以动态加载集合

代码:

@NodeEntity
公车
{
@索引
私有字符串名称;
@有关
私人设置项目;
公共电车(){}
公共电车(字符串名称)
{
this.name=名称;
}
公共无效附加项(项目)
{
此.items.add(item);
}
公共集合getItems()
{
退货项目;
}
}
@节点性
公共类项目
{
私有字符串名称;
公共项(){}
公共项(字符串名称)
{
this.name=名称;
}
公共字符串getName()
{
返回名称;
}
}
@试验
public void trolleyWithItemPersistence()
{
台车台车=新台车(“台车1”).persist();
//坚持——但我本以为会有一个级联
//添加到集合时发生。
Item Item=新项目(“item1”).persist();
//现在把它加到手推车上
台车.附件(项目);
//坚持
persist();
//现在,使用回购协议来购买电车
台车加载的Rolley=trolleyRepository.findOne(台车.getNodeId());
//应该有一个项目
assertEquals(1,loadedTrolley.getItems().size());
}

Afaik,在Spring数据Jpa中,要填充惰性加载字段,需要对调用
findOne(xxx)
的方法进行注释

@Transactional 
来自
(org.springframework.transaction.annotation.Transactional)

也许它也适用于
neo4j


我不是一个真正熟练的Spring数据开发人员,但这是我知道的检索延迟加载字段的唯一方法。如果有人有更好的解决方案,请随意编写

Afaik,在Spring数据Jpa中,要填充惰性加载字段,您需要对调用
findOne(xxx)
的方法进行注释

@Transactional 
来自
(org.springframework.transaction.annotation.Transactional)

也许它也适用于
neo4j


我不是一个真正熟练的Spring数据开发人员,但这是我知道的检索延迟加载字段的唯一方法。如果有人有更好的解决方案,请随意编写

f也是一个节点吗?可能需要你先坚持这一点。通常情况下,它应该通过前向级联工作,但这可能是一种极端情况。你能给我讲讲电车和“f”的分类定义吗?感谢确实是一件小事。我试图先坚持这一点,但最终结果是一样的。i、 e.f.persist()然后添加到集合中。我想我可以试试@RelationshipEntity?我将粘贴定义和一个简单的测试。嗨,Michael,我认为你是对的,修复方法是先持久化,然后添加到集合中。我期望发生级联,以识别添加的元素具有适当的元数据,以显示它也是一个节点。工作测试如上图所示,不在Item=newitem(“item1”).persist()上执行persist;将导致测试失败。顺便说一句,谢谢Michael,刚刚在API中看到您的名字:)谢谢:)。顺便说一句,这应该是级联的,你是对的,这是我们的计划。问题在于层叠/抓取是潘多拉的盒子,因此我们希望确保为此提供一套好的解决方案。(特别是关于如何控制级联/获取行为)。如果你对此有任何反馈,请随意分享。f也是一个节点吗?可能需要你先坚持这一点。通常情况下,它应该通过前向级联工作,但这可能是一种极端情况。你能给我讲讲电车和“f”的分类定义吗?感谢确实是一件小事。我试图先坚持这一点,但最终结果是一样的。i、 e.f.persist()然后添加到集合中。我想我可以试试@RelationshipEntity?我将粘贴定义和一个简单的测试。嗨,Michael,我认为你是对的,修复方法是先持久化,然后添加到集合中。我期望发生级联,以识别添加的元素具有适当的元数据,以显示它也是一个节点。工作测试如上图所示,不在Item=newitem(“item1”).persist()上执行persist;将导致测试失败。顺便说一句,谢谢Michael,刚刚在API中看到您的名字:)谢谢:)。顺便说一句,这应该是级联的,你是对的,这是我们的计划。问题在于层叠/抓取是潘多拉的盒子,因此我们希望确保为此提供一套好的解决方案。(特别是关于如何控制级联/获取行为)。如果你对此有任何反馈,请随意分享。