3

我已经将一些节点插入到 Neo4j DB 中。我想从数据库中选择一些节点并将其转换为特定的类。

以下是有关该问题的一些代码:

class Service {
    Neo4jTemplate neo4jTemplate

    @Transactional
    def find() {
        def id1 = 11
        //Knowledge k = neo4jTemplate.findOne(1, Knowledge)
        Result result = neo4jTemplate.query("start n=node(11) return ID(n),n.name,n.age;", null)
    //how to cast the result to User class
        println "the tpye of result called User is  "+   result.to(User.class).is(cn.edu.bnuz.itc.bok.sub2.User.class)
    }

}

有关节点的详细信息,例如:

+-------------------------------------------------------------------------+
| Node[11]{career:"programmer",name:"kelvin",age:35,introduce:"lazy doy"} |
+-------------------------------------------------------------------------+

        @NodeEntity
        class User {
        @GraphId
        Long id;
        String name;
        int age;
}

我只想从数据库中获取节点的 ID、名称、年龄并将其放入 User 类中。但它用很多方法失败了很多次。

在这里我遇到了一个问题:如何将结果转换为我的目标类?我尝试了很多方法来投射,但最终失败了。谢谢你的关注。

4

1 回答 1

1

从查询中返回用户节点,并使用所需的类作为参数调用to返回的方法:Result

Result result = neo4jTemplate.query("start n=node(11) return n", null);
for(User u : result.to(User.class)) {
    doSomethingWith(u);
}

您可能需要考虑使用支持密码查询的存储库,例如:

public interface UserRepository extends GraphRepository<User> {
    @Query("start n=node(11) return n")
    Iterable<User> getUser11();
}
于 2012-12-13T12:28:14.850 回答