Rumah > Soal Jawab > teks badan
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粉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<>();