亲爱的Spring社区,
我们很高兴地宣布,Spring Data Graph 项目第二个版本(1.1.0.RELEASE),支持 Neo4j,现已发布!
继2011年4月 Spring Data Graph 首个公开发布之后,我们主要聚焦于用户反馈。
通过改进的、关于工具的文档以及升级的 AspectJ 版本,我们解决了用户报告的许多 AspectJ 问题。使用最新的 STS 和 Eclipse,以及希望很快就能支持的 Idea11,可以开发 Spring Data Graph 应用程序而无需出现红色波浪线。为了进一步简化开发,我们还提供了 ant/ivy 的示例构建脚本和 gradle 的插件。
当然,我们也跟上了 Neo4j 的开发步伐,目前使用的是最新稳定版本的 Neo4j (1.4.1)。
在 Neo4j 开发的最近几个月里,改进的查询(Cypher,Gremlin)支持是一个重要的方面。因此,我们努力在所有层面上支持它。现在,可以从 Spring Data Graph 存储库、Neo4j-Template 执行 Cypher 查询,也可以作为动态字段注解的一部分,并通过引入的实体方法执行。Gremlin 脚本也是如此。这种新的表达能力能做什么?让我们来看看。
例如,在一个存储库中
public interface PersonRepository extends GraphRepository, NamedIndexRepository {
@Query("start team=(%team) match (team)-[:persons]->(member) return member")
Iterable findAllTeamMembers(@Param("team") Group team);
@Query(value = "g.v(team).out('persons')", type = QueryType.Gremlin)
Iterable findAllTeamMembersGremlin(@Param("team") Group team);
}
Neo4j Template API 进行了彻底的重构,方法数量大大减少,更加专注于。高级查询结果处理能力(类型转换、映射、单个结果、处理器等)现在使用更流畅的 API 实现。这个新 API 可用于所有类型的查询,无论是索引查找、图遍历、Cypher 查询还是 Gremlin 脚本。
template.query("start n=(0) match n-->m return m", null).to(Node.class);
template.execute("g.v(0).out", null).to(Node.class);
template.lookup("relationship", "name", "rel1").to(String.class, new PropertyContainerNameConverter()).single();
template.traverse(referenceNode, traversalDescription).handle(new Handler<Path>() {
public void handle(Path value) {
final String name = (String) value.endNode().getProperty("name", "");
resultSet.add(name…