Closed vonElfvin closed 1 year ago
ID
is a standard scalar that is serialized to a String by graphql-java (https://www.graphql-java.com/documentation/data-mapping#scalars), and cannot be overridden (https://github.com/graphql-java/graphql-java/issues/1420) If you would like to use UUID, you will need to use it as a custom scalar. The graphql-java-extended-scalars
library offers a scalar implementation for UUID that you can use as well: https://github.com/graphql-java/graphql-java-extended-scalars#id-scalars.
Oh, you're right! Looking at the actual schema.graphqls
code of my old graphl-java
usage I had exactly that instead of an ID!
🤦 I guess my brain had planted a pseudo-memory that it used to work for input
s as well since it works for type
.
Thanks!
Setup: I have a quite fresh Spring Boot 3 application using Java 19 and DGS
6.0.5
.Expected behavior
Able to have a
UUID
in the Kotlin code and aID!
in theschema.graphql
. I'm pretty sure this used to work when I usedgraphql-java
so I'm guessing it's a bug and not a feature request.schema.graphls
OrganizationResolver.kt
Actual behavior
Getting an exception:
(Log:
2023-05-01T18:01:51.034+02:00 WARN 28187 --- [o-11337-exec-10] n.g.e.SimpleDataFetcherExceptionHandler : Exception while fetching data (/organizationDoTheThing) : Failed to convert from type [java.util.LinkedHashMap<?, ?>] to type [@com.netflix.graphql.dgs.InputArgument com.server.domains.organization.OrganizationResolver$OrganizationDoTheThingInput] for value '{organizationId=bf3d722a-d186-4478-add8-25cbe56c4d8b}'
)Looking inside the
DefaultInputObjectMapper
these lines call theconstructor
without taking into account theUUID
being aString
:It works when I do
organizationId: String
inside the Kotlin class and useUUID.fromString
manually in the@DgsMutation
function.Steps to reproduce
Should be reproduceable by following setup above. Unless something else is off with my setup.
Note: A test case would be highly appreciated, but we understand that's not always possible