|
|
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
Приветствую. Имею модели Device -> (many-to-one) -> DeviceType. Device.java: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. DeviceType.java: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Для Device генерируется следующий JSON: Код: javascript 1. Собственно, вопрос. Как теперь сделать PUT с таким JSON? Как я понимаю, проблема в том, что вместо deviceType я ставлю его id, а конвертер не может сконвертировать такое, т.к. ожидает там объект. Такой вот контроллер дает мне ошибку 400, что ожидаемо. Но как это обойти? Код: java 1. 2. 3. 4. 5. Гуглится решение с использованием JsonDeserializer и вручную преобразовывать json в объект. Также читал про конвертеры, создать унаследованный от org.springframework.core.convert.converter.Converter класс и в нем преоразовывать из String в DeviceType (т.е. преобразовываем не весь json, а только конкретное поле). Но я что-то не пойму, как его привязать к соответствующему полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 14:43 |
|
||
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
Давайте ответим на концептуальный вопрос. У нас есть DeviceType.id но мы из него хотим иметь DeviceType. Так? Тогда логичнее бы было иметь JSON вида Код: javascript 1. Почему нет? Второй вопрос. Нужно ли нам в вашем сценарии полный DeviceType со всеми свойствами. Или достаточно только id, чтобы заперсистить в БД как FK device.adev_type? Вот это стремный маппинг Код: java 1. 2. 3. Так как количество девайсов одного типа ничем сверху не ограничено, это раз. Ещё и значение, обычно, часто изменяющееся - это два. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 14:53 |
|
||
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
BlazkowiczДавайте ответим на концептуальный вопрос. У нас есть DeviceType.id но мы из него хотим иметь DeviceType. Так? Тогда логичнее бы было иметь JSON вида Код: javascript 1. Почему нет? В принципе можно, тут я ничем не ограничен, кроме того, что ничего, кроме id не известно. BlazkowiczВторой вопрос. Нужно ли нам в вашем сценарии полный DeviceType со всеми свойствами. Или достаточно только id, чтобы заперсистить в БД как FK device.adev_type? Все свойства не нужны, может измениться только id BlazkowiczВот это стремный маппинг Код: java 1. 2. 3. Так как количество девайсов одного типа ничем сверху не ограничено, это раз. Ещё и значение, обычно, часто изменяющееся - это два. Я догадывался.. Не помню уж откуда он взялся, может, сам сгенерировался. Мне получать девайсы по типу не нужно, так что уберу его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 15:17 |
|
||
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
polter.rnd, Ну, дык. Проблема решена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 15:21 |
|
||
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Пока нет возможности проверить :) Получается, указав только id без остальных свойств в JSON-e, Jackson сможет правильно сконвертировать? Значит решена, спасибо! Вечером попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 15:34 |
|
||
|
Spring MVC: как конвертировать входящий JSON-объект с внешним ключем к сущности
|
|||
|---|---|---|---|
|
#18+
polter.rndПолучается, указав только id без остальных свойств в JSON-e, Jackson сможет правильно сконвертировать? А что значит "правильно\не правильно". Будет экземпляр DeviceType, у которого все свойства null кроме id. JPA должно быть достаточно такого объекта, чтобы просто поставить значение в auto_devices.adev_type ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2014, 15:37 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=164&tid=2126774]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 442ms |

| 0 / 0 |
