Hibernate Neo4j 以键值形式检索结果

Hibernate Neo4j retrieve result in a key-value form

我想以如下格式检索实体属性:property_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(); 
      }
   }

我在某处读到查询返回的对象是托管实体。

我希望结果是这样的:{"firstname":"Jon", "lastname":"Smith"}

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

有办法实现吗?

尝试将查询更改为:

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();

实际上,在这种情况下,这更有意义:

    Person poem = (Person) em.createNativeQuer(query, Person.class).getSingleResult();