这可能是用于访问某些Neo4j数据的典型Java 7样板。
是否存在任何机制,您可以根据超时将事务设置为自动失败和回滚?
try (Transaction tx = graphdb.beginTx()) {
Node node = // Get some Nodes ...
Iterable<Relationship> rels = node.getRelationships(...);
for (Relationship rel : rels) {
// Oh no! This is a super-node with a billion Relationships!
}
tx.success();
return data;
}
我想只有int count = 0
并递增每次迭代,然后:
if(count > XYZ) throw TakingTooLongException(count)
答案 0 :(得分:1)
您也可以在循环之前预先检查node.getDegree()
,这是密集节点的固定时间操作,而是所有其他节点的小计数器(&lt; 50 rels)。
否则还有一个执行警卫,但我不确定它会存活多久。
您可以在不调用tx.success()
的情况下从tx返回,它应该回滚。