gpt4 book ai didi

java - 将节点转换为对象

转载 作者:太空宇宙 更新时间:2023-11-04 10:07:13 24 4
gpt4 key购买 nike

假设我无权访问 SessionFactory,将 Neo4j session 执行的 StatementResult 转换为正确的对象或至少是一个 Json 的正确方法是什么?

我这样做,看起来笨拙且冗长:

var session = require(Driver.class).session(); // v1 Driver, v1 Session
try (session) {
Iterable<Record> iterable =
() -> session.run(FIND_BY_TITLE_LIKE, Map.of("titleLike", ".*" + titleLike + ".*"));
var list = StreamSupport
.stream(iterable.spliterator(), false)
.map(Record::asMap)
.map(Map::values)
.flatMap(Collection::stream) // nodes
.map(node -> ((InternalNode) node).asMap())
.collect(Collectors.toList());
LOGGER.info("Processed list: {}", list);
return list;
}

也许我应该使用其他DriverSession来实现?

最佳答案

您可以使用 Spring-Data-Neo4j (SDN) 将查询结果映射到域实体。您只需要以下三个代码片段。

存储库

@Repository
public interface NodeEntityNameDAO extends Neo4jRepository<NodeEntityName, Long> {
@Query("MATCH (nodeA:LabelA)<-[:CONTAINS]-(nodeB:LabelB) RETURN nodeA.name AS nodeAName, nodeB.name AS nodeBName;")
NodeAAndBResult[] getNodeAAndB();
}

结果对象

@QueryResult
public class NodeAAndBResult {
private String nodeAName;
private String nodeBName;

// omitted default constructor as well getter and setter for clarity
}

业务逻辑

NodeAAndBResult[] nodeAAndBResults = nodeEntityNameDAO.getNodeAAndB();
<小时/>

附录

刚刚找到一个wonderful article作者:来自 GraphAware 的 @Luanne,针对同一主题。

关于java - 将节点转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52776355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com