Size: a a a

2020 August 25

ПП

Проксимов Прксимович... in learn.java
Оказывается проблема не в тернарнике
источник

SP

Sergey Pushkin in learn.java
Как лучше реализовать механизм для ситуации, когда от определённого статуса модели меняется набор полей в результирующем дто, которое отдаёт информацию? Статусов  на текущий момент 10, скорее всего они часто будут меняться. Под каждый стейт заводит отдельное дто?
источник

DM

Dmitry Maslov in learn.java
Sergey Pushkin
Как лучше реализовать механизм для ситуации, когда от определённого статуса модели меняется набор полей в результирующем дто, которое отдаёт информацию? Статусов  на текущий момент 10, скорее всего они часто будут меняться. Под каждый стейт заводит отдельное дто?
Если ты используешь Jackson, то почитай про JsonView, возможно это поможет
источник

SP

Sergey Pushkin in learn.java
Dmitry Maslov
Если ты используешь Jackson, то почитай про JsonView, возможно это поможет
выглядит удобно, что модель одна. Получается увеличивается количество контроллеров?
источник

DM

Dmitry Maslov in learn.java
Sergey Pushkin
выглядит удобно, что модель одна. Получается увеличивается количество контроллеров?
По идее там все можно уместить в один метод контроллера. У маппера вызвать метод writeWithView() и туда уже передать нужную тебе вьюху, которую ты получишь на основании своей логики со статусами. Это решение на скорую руку, мб ты придумаешь что-нибудь получше
источник

SP

Sergey Pushkin in learn.java
Dmitry Maslov
По идее там все можно уместить в один метод контроллера. У маппера вызвать метод writeWithView() и туда уже передать нужную тебе вьюху, которую ты получишь на основании своей логики со статусами. Это решение на скорую руку, мб ты придумаешь что-нибудь получше
спасибо, почитаю доки
источник

MR

Muzaffar Rasulov in learn.java
ребят один вопрос,
смотрю spring data jdbc реализация 1-* Группы - Студенты

в группе:
@Id
   private Long id;
   private String name;
   @MappedCollection(idColumn = "id_group")
   private Set<Student> students = new HashSet<>();

у студентов:
@Id
   private Long id;
   private String name;
   @Column(value = "id_group")
   private Long idGroup;

и при запросе группу получаю все по честному
Group(id=1, name=aaa, students=[Student(id=1, name=a1, idGroup=1), Student(id=2, name=a2, idGroup=1), Student(id=3, name=a3, idGroup=1)]

а если студента то получаю
Student(id=3, name=a3, idGroup=1)

а как получить объект группы при запросе студента?
источник

MR

Muzaffar Rasulov in learn.java
конечно можно у студента сделать вместо Long idGroup сделать Group group
источник

MR

Muzaffar Rasulov in learn.java
а там эксепшн java.sql.SQLSyntaxErrorException: Unknown column 'group.id_group' in 'on clause'
и все верно
источник

DC

Denis Chikanov in learn.java
Muzaffar Rasulov
а там эксепшн java.sql.SQLSyntaxErrorException: Unknown column 'group.id_group' in 'on clause'
и все верно
как минимум надо в группе параметр в аннотации подправить, если у студентов колонку меняешь
источник

DC

Denis Chikanov in learn.java
но я сходу не помню, так ли это работает
источник

SY

Sleeping Yaroslav in learn.java
Всем привет.
Подскажите как лучше запускать какой-то сервис при поднятии спринга?
Сейчас пользуюсь CommandLineRunner, но при запуске тестов он тоже запускается, а мне бы не хотелось этого...
источник

SP

Sam Panza in learn.java
Sleeping Yaroslav
Всем привет.
Подскажите как лучше запускать какой-то сервис при поднятии спринга?
Сейчас пользуюсь CommandLineRunner, но при запуске тестов он тоже запускается, а мне бы не хотелось этого...
Объявить не lazy бин и убрать его под профиль
источник

SY

Sleeping Yaroslav in learn.java
Sam Panza
Объявить не lazy бин и убрать его под профиль
И в конструкторе запустить метод?
источник

SY

Sleeping Yaroslav in learn.java
по моему и в конструкторе и в пост конструкторе есть шанс что еще не все бины создались, а как по другому запустить нужный метод я что-то не могу придумать
источник

SP

Sam Panza in learn.java
Sleeping Yaroslav
И в конструкторе запустить метод?
Не, лучше нужный метод аннотировать @PostConstructом
источник

NG

Nikita Gryzlov in learn.java
Sleeping Yaroslav
по моему и в конструкторе и в пост конструкторе есть шанс что еще не все бины создались, а как по другому запустить нужный метод я что-то не могу придумать
можно подписаться на эвент окончания поднятия контекста спринга
источник

NG

Nikita Gryzlov in learn.java
он отрабатывает после инициализации всех бинов. в т.ч. после постконстрактов
источник

SY

Sleeping Yaroslav in learn.java
И он не запустится в тесте когда тест поднимет контекст? Или типа вешать на бин профиль а на метод эвент?
источник

SP

Sam Panza in learn.java
Sleeping Yaroslav
И он не запустится в тесте когда тест поднимет контекст? Или типа вешать на бин профиль а на метод эвент?
Разводи профилями, или явно эксклюдь в тестовом @ContextConfiguration
источник