我们在 QuickBooks 的在线连接方面遇到一些问题。最近,我们将代码库从 Java11 迁移到 Java21,从 Spring Boot 2.4.3 迁移到 Spring Boot 3.3.3,以及从 QuickBooks 6.0.7 迁移到 QuickBooks 6.4.1。通过我们的应用程序连接到 QuickBooks 时,由于某些问题,它不会重定向回我们的应用程序。早期版本工作正常,但迁移后,我们遇到错误。
这是我收到错误的代码片段
public String getCompanyName(String accessToken, String realmId) throws Exception {
DataService dataService = serviceFactory.getDataService(accessToken, realmId);
String query = "select * from companyinfo";
**QueryResult executeQuery = dataService.executeQuery(query);** // this line we are getting error
String comapnyDisplayName = "QB Company";
List<CompanyInfo> entities = null;
if (executeQuery != null) {
entities = (List<CompanyInfo>) executeQuery.getEntities();
if (entities != null && !entities.isEmpty()) {
comapnyDisplayName = entities.get(0).getCompanyName();
}
}
return comapnyDisplayName;
}
在最后一行中我遇到了一些错误。
日志:
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `com.intuit.ipp.data.MonthEnum` from String "January": not one of the values accepted for Enum class: [OCTOBER, SEPTEMBER, JUNE, MARCH, MAY, APRIL, JULY, JANUARY, FEBRUARY, DECEMBER, AUGUST, NOVEMBER]
at [Source: UNKNOWN; byte offset: #UNKNOWN] (through reference chain: com.intuit.ipp.data.CompanyInfo["FiscalYearStartMonth"])
at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67)
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1958)
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1245)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._deserializeAltString(EnumDeserializer.java:447)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer._fromString(EnumDeserializer.java:304)
at com.fasterxml.jackson.databind.deser.std.EnumDeserializer.deserialize(EnumDeserializer.java:273)
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:310)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4881)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3035)
at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3499)
at com.intuit.ipp.serialization.QueryResponseDeserializer.deserialize(QueryResponseDeserializer.java:134)
at com.intuit.ipp.serialization.QueryResponseDeserializer.deserialize(QueryResponseDeserializer.java:48)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4881)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3035)
at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3499)
at com.intuit.ipp.serialization.IntuitResponseDeserializer.getQueryResponse(IntuitResponseDeserializer.java:327)
at com.intuit.ipp.serialization.IntuitResponseDeserializer.deserialize(IntuitResponseDeserializer.java:198)
at com.intuit.ipp.serialization.IntuitResponseDeserializer.deserialize(IntuitResponseDeserializer.java:54)
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4905)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3848)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3816)
at com.intuit.ipp.serialization.JSONSerializer.deserialize(JSONSerializer.java:302)
... 95 more
有谁知道为什么会出现这个错误?与 Java、Spring Boot 或 QuickBooks Online 相关吗?
错误是您的 MonthEnum 采用 PascalCase 格式,但库希望它采用全部大写字母。
Cannot deserialize value of type `com.intuit.ipp.data.MonthEnum` from String "January": not one of the values accepted for Enum class: [OCTOBER, SEPTEMBER, JUNE, MARCH, MAY, APRIL, JULY, JANUARY, FEBRUARY, DECEMBER, AUGUST, NOVEMBER]
一月 -> 一月