Dapatkan semula tatasusunan JSON atau objek JSON menggunakan unjuran JPA dan antara muka DTO
P粉317679342
P粉317679342 2023-12-27 23:37:14
0
1
480

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粉317679342
P粉317679342

membalas semua(1)
P粉463291248

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<>();
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan