我使用的是Spring Data Neo4J 3.3.1,更新节点时遇到困难。我有与此等效的代码,它对数据库没有任何影响:
@Transactional
public void editTitle(Long nodeId, String newTitle) {
MyNode existingNode = nodeRepository.findOne(nodeId);
existingNode.getSubObject().setTitle(newTitle);
nodeRepository.save(existingNode);
}
这是MyNode类:
@NodeEntity
public class MyNode {
@Fetch
@RelatedTo(type="LINKED_TO", direction = Direction.OUTGOING)
private SubObject subObject;
public SubObject getSubObject() {
return subObject;
}
}
这是SubObject类:
@NodeEntity
public class SubObject {
private String title;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
我能够毫无问题地保存MyNode类型的新节点。我只是打电话
nodeRepository.save(newNode);
并立即将MyNode和SubObject保存到数据库中。
我已经确认交易正在提交。我一直跟踪调用堆栈直到NeoStoreTransaction类,并观察到executeModified方法处理命令,但我更改的字段没有在那里表示。