#graphql-spqr #graphql-spqr-spring-boot-starter
Вопрос:
Допустим, у меня есть
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="trade_id")
int tradeId;
Когда я запрошу это из базы данных, я захочу получить идентификатор сделки. Однако при выполнении создания, очевидно, у меня не будет tradeId, так как база данных будет генерировать его, когда я его вставлю.
input TradeInput {
tradeId: Int!
...
Но схема, которую SPQR генерирует для меня, устанавливает для этого поля значение Not Null, однако.
Поэтому мой вопрос в том, как предотвратить автоматическое появление этого поля как не пустого, чтобы мне не пришлось отправлять его при создании, но я мог его получить.
Ответ №1:
Такого int
просто не может быть null
. Но у вас есть несколько вариантов:
- Превратите его в
ID
скалярный тип (используя@GraphQLId
) вместоInt
- Задайте ему значение по умолчанию с помощью
@GraphQLInputField
- Используйте
Integer
вместоint
, какInteger
можно обнулить
Комментарии:
1. Спасибо! Это имеет смысл в отношении int/Integer. Кстати, по какой причине вы отредактировали свой ответ, чтобы не включать предложение использовать 0.0.6? Когда я пытаюсь это сделать, мне не удается проанализировать класс [io.leangen.graphql.spqr.spring.web.HttpExecutor] из загрузчика классов. Это известная проблема/поэтому вы отказались от своей рекомендации?
2. @Стив Ха, нет. Только потому, что вы не упомянули версию, которую используете здесь, поэтому я подумал, что было бы странно упоминать об этом ни с того ни с сего. Никогда не слышал о проблеме, о которой вы упоминали раньше… Если вы не разберетесь в этом быстро, пожалуйста, откройте проблему с минимальным примером, воспроизводящим ее.