Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Jpa JavaEE6RESTAPI命名查询结果_Jpa_Java Ee 6 - Fatal编程技术网

Jpa JavaEE6RESTAPI命名查询结果

Jpa JavaEE6RESTAPI命名查询结果,jpa,java-ee-6,Jpa,Java Ee 6,我有一个简单的JEE6REST类,它从db2获取数据。我在ApplicationConfig类中使用Jackson将实体对象转换为json。它以字段名为键,值为右边值进行转换。例如: Class Entity { String name; String address; } 皈依 {name:"hello", address:"world"} 服务内容如下: public List<T> findAll() { javax.persistence.criteria

我有一个简单的JEE6REST类,它从db2获取数据。我在ApplicationConfig类中使用Jackson将实体对象转换为json。它以字段名为键,值为右边值进行转换。例如:

Class Entity {
String name;
String address;
}
皈依

{name:"hello", address:"world"}
服务内容如下:

public List<T> findAll() {
        javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
        cq.select(cq.from(entityClass));
        return getEntityManager().createQuery(cq).getResultList();
    }
服务改为

public List<T> findAll() {
            return getEntityManager().createNamedQuery("justGetName").getResultList();
        }
但我想回去:

[{name:"first",name:"second",name:"third"}]

如何编写命名查询,以便将类字段名添加到json结构中?谢谢。

您正在查询数据库中的字符串列表,这是服务返回的内容

它们是实现目标的多种方法

纯JPA

  • 使用@JsonIgnore告诉Jackson不要序列化属性

    class Application {
      String name;
      @JsonIgnore
      String address;
    }
    
  • 创建一个仅包含要共享的属性的新实体类

    class ApplicationName {
      String name;
    }
    
  • 或者,您可以引入一个单独的类,该类仅包含您希望共享的属性,并将查询结果转换为此类,然后返回此转换值的列表

    class Application {
      String name;
      @JsonIgnore
      String address;
    }
    
    class ApplicationName {
      String name;
    }