Я разрабатываю относительно большой проект с использованием Spring Boot, и в общем, я очень доволен этим, но у меня возникают некоторые проблемы, которые на мой взгляд, это не проблема.Lazy One-To-One Spring JPA и здание «динамический» JSON
Прежде всего, взаимно-однозначное отношение. Это расстраивает то, что это не работает, как должно (по крайней мере, на мой взгляд).
У меня есть два объекта,
User
иUserProfile
, например. У них есть отношения «один-к-одному», но большую часть времени мне нужны только данныеUser
, но он выбирает (независимо от того, что я пытаюсь, и о, мальчик, я пробовал предложения мира на каждое сообщение для 5 страниц Google).Итак, есть мой первый вопрос, есть ли способ получить ленивые отношения «один-к-одному» в JPA и Spring? (Потому что большинство сообщений старше 2-3 лет).
Другая проблема, с которой я столкнулся, заключается в том, чтобы построить ответ JSON «динамическим» способом. Я сделал некоторые вещи, используя Rails, и был очень доволен
JBuilder
или дажеto_json
, который дал мне возможность построить ответ json в зависимости от контроллера и моих потребностей на данный момент.Весной я увидел следующие решения:
Jackson @JsonView
(который не решает полностью мою проблему, потому что ответы не то, что статические и атрибут не может быть назначено несколько представлений (насколько Я понял эту концепцию));- установка нулевых атрибутов, которые я не хочу откликать (используя это, но я слишком уродлив и похож на неправильное пошаговое руководство);
- или здание
HashMap
как я построю.json.jbuilder
на Rails (но это убивает мое исполнение, так как иногда у него есть отношения, поэтому многоfor
для создания json, а также это выглядит как уродливое пошаговое руководство).
Я ищу некоторых направлениях от кого-то, что когда-нибудь, возможно, столкнулись один из этих проблем, потому что это меня убивает не в состоянии решить проблемы, так что, на мой взгляд, не должно быть это трудно.
EDIT 1
Уже пытался добавить optional = false
на @OneToOne
аннотации решить нетерпеливые нагрузки OneToOne отношений, как @snovelli предложил. Пример:
@OneToOne(optional=false, fetch = FetchType.LAZY)
public UserProfile getUserProfile(){ ... }
Ваш вопрос содержит два несвязанных вопроса. Вы должны выбрать один и извлечь другой в отдельный вопрос. Во всяком случае, это первый вопрос SO, в котором я добавил два ответа. :) –
Я подумал об этом, но у меня были некоторые вопросы, подобные этим, но никто не ответил, поэтому я разместил это, зная, что мне нужно будет поставить щедрость, чтобы на него можно было ответить, и поскольку у меня слишком много очков чтобы сэкономить на щедрости, я поставил их в один вопрос: (Но, по крайней мере, я думаю, что это два вопроса, которые могут быть у всех, у которых нет волшебников в Spring и JPA. – augustoccesar