Spring将实体管理器的`getResultList`结果转换为JSON。

huangapple 未分类评论52阅读模式
标题翻译

Spring Convert enity manager getResultList results to JSON

问题

以下是您提供的代码的翻译部分:

我对 Spring 还不太熟悉我正在使用 Spring 的 `entitymanager.createquery` 来进行查询并从数据库获取结果

所以在进行 HTTP GET 请求时以下方法会执行以获取所有病人的姓名

public List<PatientModel> fetchallpatients() {
    Query q = entityManager.createNativeQuery("select * from patient p ");
    List<PatientModel> patientList = q.getResultList();
    System.out.println(patientList);
    return patientList;
}

它返回的结果如下

> [[
>     1,
>     "病人姓名",
>     "病人电话",
>     "病人性别",
>     "病人保险",
>     "病人年龄",
>     "病人诊断",
>     "病人附加需求",
>     "病人EMR"
> ],
> [
>     2,
>     "测试",
>     "病人电话",
>     "病人性别",
>     "病人保险",
>     "病人年龄",
>     "病人诊断",
>     "病人附加需求",
>     "病人EMR"
> ],
> ...
> ]]

我在前端使用 React我需要将这些数据格式化为 JSON 格式

我有一个对应表格的 POJO 类

package io.login.model;

import java.io.Serializable;

public class PatientModel implements Serializable {

    String patientname;
    String patientage;
    String patientgender;
    String patientinsurance;
    String patientphone;
    String patientaddreq;
    String patientemr;
    
    public String getPatientname() {
        return patientname;
    }

    // 其他 getter 和 setter 方法...

    String patientdiagnosis;

    public PatientModel(String patientname, String patientage, String patientgender, String patientinsurance, String patientphone, String patientdiagnosis, String patientaddreq, String patientemr) {
        this.patientname = patientname;
        this.patientage = patientage;
        this.patientgender = patientgender;
        this.patientinsurance = patientinsurance;
        this.patientphone = patientphone;
        this.patientdiagnosis = patientdiagnosis;
        this.patientaddreq = patientaddreq;
        this.patientemr = patientemr;
    }
}

不过需要注意,您提供的代码片段中存在一些 HTML 编码,比如 &quot; 表示双引号,这些在翻译后可能会影响代码的准确性。如果您希望进行编码的转换,请在代码中进行处理。

英文翻译

I'm quite new to spring and I'm using spring entitymanager.createquery to make query and get the result from database.

So when make a http get this method executes to get all the patient name

    public List&lt;PatientModel&gt; fetchallpatients (){
        Query q = entityManager.createNativeQuery(&quot;select * from patient p &quot;);
       List &lt;PatientModel&gt; patientList=q.getResultList();
        System.out.println(patientList);
        return patientList;
    }

it is returning

> [[
> 1,
> "patientname",
> "patientphone",
> "patientgender",
> "patientinsurance",
> "patientage",
> "patientdiagnosis",
> "patientaddreq",
> "patientemr"
> ],
> [
> 2,
> "test",
> "patientphone",
> "patientgender",
> "patientinsurance",
> "patientage",
> "patientdiagnosis",
> "patientaddreq",
> "patientemr"
> ],
> [
> 3,
> "react",
> "12312",
> "male",
> "react",
> "56",
> "dsa",
> "ads",
> "das"
> ],
> [
> 4,
> "sign",
> "asd",
> "male",
> "react",
> "56",
> "Diagnose 2",
> "Ventilator",
> "on"
> ],
> [
> 5,
> "good",
> "3213",
> "male",
> "react",
> "56",
> "Diagnose 3",
> "ICU",
> "on"
> ] ]

Front end I'm using react and I need this data to be in JSON format.

I have a POJO class for corresponding table:

package io.login.model;

import java.io.Serializable;

public class PatientModel  {

    String patientname;
    String patientage;
    String patientgender;
    String patientinsurance;
    String patientphone;
    String patientaddreq;
    String patientemr;


    public String getPatientname() {
        return patientname;
    }

    public void setPatientname(String patientname) {
        this.patientname = patientname;
    }

    public String getPatientage() {
        return patientage;
    }

    public void setPatientage(String patientage) {
        this.patientage = patientage;
    }

    public String getPatientgender() {
        return patientgender;
    }

    public void setPatientgender(String patientgender) {
        this.patientgender = patientgender;
    }

    public String getPatientinsurance() {
        return patientinsurance;
    }

    public void setPatientinsurance(String patientinsurance) {
        this.patientinsurance = patientinsurance;
    }

    public String getPatientphone() {
        return patientphone;
    }

    public void setPatientphone(String patientphone) {
        this.patientphone = patientphone;
    }

    public String getPatientdiagnosis() {
        return patientdiagnosis;
    }

    public void setPatientdiagnosis(String patientdiagnosis) {
        this.patientdiagnosis = patientdiagnosis;
    }

    public String getPatientaddreq() {
        return patientaddreq;
    }

    public void setPatientaddreq(String patientaddreq) {
        this.patientaddreq = patientaddreq;
    }

    public String getPatientemr() {
        return patientemr;
    }

    public void setPatientemr(String patientemr) {
        this.patientemr = patientemr;
    }

    String patientdiagnosis;

    public PatientModel(String patientname, String patientage, String patientgender, String patientinsurance, String patientphone, String patientdiagnosis, String patientaddreq, String patientemr) {
        this.patientname = patientname;
        this.patientage = patientage;
        this.patientgender = patientgender;
        this.patientinsurance = patientinsurance;
        this.patientphone = patientphone;
        this.patientdiagnosis = patientdiagnosis;
        this.patientaddreq = patientaddreq;
        this.patientemr = patientemr;
    }

   
}

But I need the result like

    { { &quot;patientname&quot;:&quot;xyz&quot; 
&quot;patientphone&quot;:&quot;xyz&quot; 
&quot;patientinsurance&quot;:&quot;xyz&quot; 
&quot;patientgender&quot;:&quot;xyz&quot; 
&quot;patientdiagnosis&quot;:&quot;xyz&quot; 
&quot;patientaddreq&quot;:&quot;xyz&quot; ... so on
    
    }
    }

答案1

得分: 0

你正在返回 List<String[]>,并期望它是你的 POJO 的 JSON 列表?

将你的方法更改为返回预期的内容,如下所示:

@Transactional
public List<PatientModel> fetchAllPatients() {
    Query q = entityManager.createNativeQuery("select * from patient p ");
    List<PatientModel> patientList = q.getResultList();
    System.out.println(patientList);
    return patientList;
}
英文翻译

you are returning List&lt;String[]&gt; and expect it to be a JSON list of your POJO?

change your method to return what is expected, like:

  @Transactional
  public List&lt;PatientModel&gt; fetchallpatients () {
      Query q = entityManager.createNativeQuery(&quot;select * from patient p &quot;);
      List &lt;PatientModel&gt; patientList = q.getResultList();
      System.out.println(patientList);
      return patientList;
  }

huangapple
  • 本文由 发表于 2020年5月30日 23:19:35
  • 转载请务必保留本文链接:https://java.coder-hub.com/62104534.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定