1

我想以如下格式检索实体属性: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可能是我正在寻找的东西,但我无法让它工作。

有没有办法做到这一点?

4

2 回答 2

0

尝试将您的查询更改为:

MATCH (p:Person {id:3})
RETURN { firstname: p.firstname, lastname: p.lastname }
于 2017-09-21T13:00:08.627 回答
0

如果您正在寻找作为实体的返回值,这将起作用:

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();
于 2017-09-21T14:34:24.550 回答