Вы должны сериализовать его в один из стандартных типов.Если вы хотите, чтобы ваш байтовый массив выглядел как строка, такая как «F3269AB2», или как массив целых чисел, такой как [1,2,3,4,5], это полностью зависит от вас.
Вы можетедобиться сериализации, написав резольвер для вашей сущности, например:
public class ThumbnailResolver extends GraphQLResolver<Thumbnail> {
public String resource(Thumbnail th) { ... }
//or List<Integer> resource(Thumbnail th) { ... }
//or whatever
}
Резолвер всегда имеет приоритет над вашей сущностью.Это означает, что если в классе распознавателя найден метод распознавателя с правильным именем, параметрами и типом возврата, он будет вызван вместо метода сущности.Таким образом, мы можем «переопределить» методы объекта, чтобы вернуть другой результат, даже другой тип, чем поле фактического объекта.Используя средства распознавания, мы также можем получить доступ к службам области приложения и т. Д., Которых у организации обычно нет.
После написания средства распознавания не забудьте обновить файл схемы до:
resource: String
#or resource:[Int]
#or whatever
Ваша схема должна ссылаться на тип распознавателя, поскольку это то, что получает GraphQL.Фактический тип сущности станет тогда неуместным для graphQL.
В качестве плана B вы можете реализовать новый скаляр.Это все равно что изобретать новый базовый тип.Это тоже не так сложно.Вы можете увидеть уже существующие скалярные типы здесь и сделать что-то подобное.
Затем вы можете назвать свой новый тип ByteArray или что-то подобное, объявив его в своей схеме:
scalar ByteArray
и затем используйте его.
Я бы выбрал первое решение, поскольку его проще и быстрее реализовать.