Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate Neo4j以键值形式检索结果_Java_Hibernate_Neo4j_Hibernate Ogm_Hibernate Native Query - Fatal编程技术网

Java Hibernate Neo4j以键值形式检索结果

Java Hibernate Neo4j以键值形式检索结果,java,hibernate,neo4j,hibernate-ogm,hibernate-native-query,Java,Hibernate,Neo4j,Hibernate Ogm,Hibernate Native Query,我希望以如下格式检索实体属性:property\u name:value 我试图通过以下方式获得结果: public void retrievePerson(){ EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.ge

我希望以如下格式检索实体属性:
property\u name:value

我试图通过以下方式获得结果:

public void retrievePerson(){
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence");
    EntityManager em = emf.createEntityManager();
    EntityTransaction tx = em.getTransaction();
    tx.begin();
      try{

         String query = "MATCH (p:Person {id:3}) RETURN p.firstname, p.lastname";

         List<Object[]> person = (List<Object[]>) em.createNativeQuery(query).getResultList();

         em.flush();
         tx.commit();
         em.clear();
         em.close();
         emf.close();

      }
      catch (HibernateException e) {
         if (tx!=null) tx.rollback();
         e.printStackTrace(); 
      }
   }
public void retrievePerson(){
EntityManagerFactory emf=Persistence.createEntityManagerFactory(“Persistence”);
EntityManager em=emf.createEntityManager();
EntityTransaction tx=em.getTransaction();
tx.begin();
试一试{
String query=“MATCH(p:Person{id:3})返回p.firstname,p.lastname”;
List person=(List)em.createNativeQuery(query.getResultList();
em.flush();
tx.commit();
em.clear();
em.close();
emf.close();
}
捕获(休眠异常e){
如果(tx!=null)tx.rollback();
e、 printStackTrace();
}
}
我在某处读到,查询返回的对象是一个托管实体

我希望结果如下:
{“firstname”:“Jon”,“lastname”:“Smith”}

我找到了这个
setResultTransformer(别名ToEntityMapResultTransformer.INSTANCE
,这可能是我正在寻找的东西,但我无法让它工作


有没有办法做到这一点?

尝试将查询更改为:

MATCH (p:Person {id:3})
RETURN { firstname: p.firstname, lastname: p.lastname }

尝试将查询更改为:

MATCH (p:Person {id:3})
RETURN { firstname: p.firstname, lastname: p.lastname }

如果您希望返回的值是一个实体,这将起作用:

String query = "MATCH (p:Person {id:3}) RETURN p";
List<Person> person = (List<Person>) em.createNativeQuery(query, Person.class).getResultList();

如果您希望返回的值是一个实体,这将起作用:

String query = "MATCH (p:Person {id:3}) RETURN p";
List<Person> person = (List<Person>) em.createNativeQuery(query, Person.class).getResultList();

这很好。我得到的结果是这样的:
[{firstname=Jon,lastname=Smith}]
。之后我可以将这个数组转换成一个正确的JSON。@Porjaz试试这个技巧:
MATCH(p:Person{id:3})RETURN collect({firstname:p.firstname,lastname:p.lastname})[0]
它仍然以相同的格式提供它们
[{firstname=Jon,lastname=Smith}]
@Porjaz这可能与您的Java代码转换查询结果的方式有关。我建议您就此提出一个新问题。这不是什么大问题。我可以编写一个代码将其转换为正确的json。非常感谢您的帮助。这很好。我得到的结果如下
[{firstname=Jon,lastname=Smith}]
之后我可以将这个数组转换成一个正确的JSON。@Porjaz试试这个技巧:
MATCH(p:Person{id:3})RETURN collect({firstname:p.firstname,lastname:p.lastname})[0]
它仍然以相同的格式给出它们@Porjaz这可能与您的Java代码转换查询结果的方式有关。我建议您就此提出一个新问题。这不是什么大问题。我可以编写一个代码将其转换为正确的json。非常感谢您的帮助。我想这不是我想要的。我正在尝试返回一个子图(家谱)所以查询非常大。这就是为什么我需要返回每个人的名字、姓氏、关系、关系属性等。Bruno Peres的查询以我所寻找的接近的方式返回数据。它返回
[{firstname=Jon,lastname=Smith}]
。理想情况下,如果返回的结果可以是json格式,那就最好了Hibernate OGM目前不支持ResultTransformers,我为此提出了一个问题:我认为这不是我想要的。我正在尝试返回一个子图(族谱树)所以查询非常大。这就是为什么我需要返回每个人的名字、姓氏、关系、关系属性等等。Bruno Peres的查询以我所寻找的接近的方式返回数据。它返回
[{firstname=Jon,lastname=Smith}]
。理想情况下,如果返回的结果可以是json格式,那就最好了Hibernate OGM目前不支持ResultTransformers,我为它创建了一个问题: