1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個贊
ScalarStrategy不是實(shí)現(xiàn)您想要的目標(biāo)的正確方法。當(dāng)您想要更改 Java 類型映射到 GraphQL 的方式時,您通常會提供一個新的(或自定義一個現(xiàn)有的)TypeMapper.
查看現(xiàn)有的Date標(biāo)量實(shí)現(xiàn)并以類似的方式實(shí)現(xiàn)您自己的標(biāo)量實(shí)現(xiàn)。然后實(shí)現(xiàn)一個自定義,它總是簡單地從和方法TypeMapper返回該標(biāo)量的靜態(tài)實(shí)例。toGraphQLTypetoGraphQLInputType
public class CustomTypeMapper implements TypeMapper {
private static final GraphQLScalarType GraphQLCustomDate = ...;
@Override
public GraphQLOutputType toGraphQLType(...) {
return GraphQLCustomDate;
}
@Override
public GraphQLInputType toGraphQLInputType(...) {
return GraphQLCustomDate;
}
@Override
public boolean supports(AnnotatedType type) {
return type.getType() == Date.class; // This mapper only deals with Date
}
}
要注冊它,請致電generator.withTypeMappers(new CustomTypeMapper()。
也就是說,由于您只是想切斷時間部分,因此最好LocalDate在此處使用。您可以通過注冊一個(它只不過是一個映射器 + 轉(zhuǎn)換器)使 SPQR 透明地做到這一點(diǎn),TypeAdapter但是如上所述的簡單映射器是您的情況下更有效的解決方案。如果您仍然決定采用適配器方式,則可以繼承AbstractTypeAdapter<Date, LocalDate>并實(shí)現(xiàn)轉(zhuǎn)換邏輯(應(yīng)該是微不足道的)。通過generator.withTypeAdapters或通過將其分別注冊為映射器和轉(zhuǎn)換器進(jìn)行注冊。
添加回答
舉報