cari

Rumah  >  Soal Jawab  >  teks badan

Dapatkan semula tatasusunan JSON atau objek JSON menggunakan unjuran JPA dan antara muka DTO

Saya mempunyai antara muka DTO yang menggunakan cantuman untuk mendapatkan data daripada jadual yang berbeza. Saya mencipta antara muka DTO dengan kaedah pengambil abstrak seperti ini.

public interface HRJobsDTO {

    String getEditorName();

    String getEditorId();

    String getBillingMonth();

    Integer getEditorWordCount();

    Integer getJobCount();

    Integer getEmployeeGrade();

    Float getGrossPayableAmount();

    Float getJobBillingRate();

    Float getTaxDeduction();

    Float getTaxDeductionAmount();

    Float getNetPayableAmount();

    String getInvoiceStatus();

    String getFreelanceInvoiceId();
}

Dalam antara muka ini kaedah getFreelanceInvoiceId(); saya menggunakan fungsi json_arrayagg mysql untuk mengembalikan tatasusunan JSON. Saya menukar jenis data kepada String, String[] dan Arraylist tetapi ia mengembalikan sesuatu seperti ini dalam respons saya

"freelanceInvoiceId": "["4af9e342-065b-4594-9f4f-a408d5db9819/2022121-95540", "4af9e342-065b-4594-9f4f-a408d5db9819/2022121-95540", "4af9e342-065b-4594-9f4f-a408d5db9819/20221215-53817", "4af9e342-065b-4594-9f4f-a408d5db9819/20221215-53817", "4af9e342-065b-4594-9f4f-a408d5db9819/20221215-53817"]"

Adakah terdapat cara untuk mengembalikan tatasusunan sahaja tanpa garis miring ke belakang?

P粉317679342P粉317679342376 hari yang lalu524

membalas semua(1)saya akan balas

  • P粉463291248

    P粉4632912482023-12-28 10:29:22

    Anda boleh menggunakan @Converter dalam JPA (juga dilaksanakan oleh hibernate)

    @Converter
    public class List2StringConveter implements AttributeConverter<List<String>, String> {
    
        @Override
        public String convertToDatabaseColumn(List<String> attribute) {
            if (attribute == null || attribute.isEmpty()) {
                return "";
            }
            return StringUtils.join(attribute, ",");
        }
    
        @Override
        public List<String> convertToEntityAttribute(String dbData) {
            if (dbData == null || dbData.trim().length() == 0) {
                return new ArrayList<String>();
            }
    
            String[] data = dbData.split(",");
            return Arrays.asList(data);
        }
    }

    dan rujuk dalam kelas pojo seperti di bawah

    @Column(name="freeLanceInvoiceId")
    @Convert(converter = List2StringConveter.class)
    private List<String> tags=new ArrayList<>();

    balas
    0
  • Batalbalas