Heim > Fragen und Antworten > Hauptteil
Ich habe eine DTO-Schnittstelle, die Joins verwendet, um Daten aus verschiedenen Tabellen abzurufen. Ich habe eine DTO-Schnittstelle mit solchen abstrakten Getter-Methoden erstellt.
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(); }
In dieser Schnittstelle verwendet meine Methode getFreelanceInvoiceId(); die json_arraygg-Funktion von MySQL, um ein JSON-Array zurückzugeben. Ich habe den Datentyp in String, String[] und Arraylist geändert, aber in meiner Antwort wird in etwa Folgendes zurückgegeben
"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"]"
Gibt es eine Möglichkeit, nur Arrays ohne Backslashes zurückzugeben?
P粉4632912482023-12-28 10:29:22
您可以使用 JPA 中的@Converter(也由 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); } }
并在 pojo 类中引用它,如下所示
@Column(name="freeLanceInvoiceId") @Convert(converter = List2StringConveter.class) private List<String> tags=new ArrayList<>();