Size: a a a

Spring Framework and more

2020 April 04

РН

Роман Нагаев in Spring Framework and more
Oleg Pavl
Не понял задачу значит. Вот данные с которыми проблема в проге. Что нужно сделать?
скорее всего в гибернейте всё правильно, а в запросе которым ты проверяешь нет, мне не нравится что фильтрация и условие соединения слиты в одно выражение, на этом запросто может проявиться такая проблема, на самом деле для проверки тебе даже джоин не нужен, напиши простой запрос с фильтрами как в приложении

@deest1ke советует заюзать гибернейтовский запрос, тоже норм идея, но так как ты не настраивал стратегию загрузки и используешь ленивую связь, гибернейт генерит N+1 запросов, можешь(исключительно для теста) заменить связь на eager, тогда гибернейт сгенерит один запрос с джойном, его можно будет загнать в базу для проверки
источник

OP

Oleg Pavl in Spring Framework and more
Artyom Krikheli
без order by и доп.фильтров
Вроде так
источник

OP

Oleg Pavl in Spring Framework and more
источник

OP

Oleg Pavl in Spring Framework and more
Роман Нагаев
скорее всего в гибернейте всё правильно, а в запросе которым ты проверяешь нет, мне не нравится что фильтрация и условие соединения слиты в одно выражение, на этом запросто может проявиться такая проблема, на самом деле для проверки тебе даже джоин не нужен, напиши простой запрос с фильтрами как в приложении

@deest1ke советует заюзать гибернейтовский запрос, тоже норм идея, но так как ты не настраивал стратегию загрузки и используешь ленивую связь, гибернейт генерит N+1 запросов, можешь(исключительно для теста) заменить связь на eager, тогда гибернейт сгенерит один запрос с джойном, его можно будет загнать в базу для проверки
У меня связь многие к одному, она помоему по умолчания eager, я ее не менял. Мне всеравно данные по стране нужно передавать вместе со статами.
источник

OP

Oleg Pavl in Spring Framework and more
Роман Нагаев
скорее всего в гибернейте всё правильно, а в запросе которым ты проверяешь нет, мне не нравится что фильтрация и условие соединения слиты в одно выражение, на этом запросто может проявиться такая проблема, на самом деле для проверки тебе даже джоин не нужен, напиши простой запрос с фильтрами как в приложении

@deest1ke советует заюзать гибернейтовский запрос, тоже норм идея, но так как ты не настраивал стратегию загрузки и используешь ленивую связь, гибернейт генерит N+1 запросов, можешь(исключительно для теста) заменить связь на eager, тогда гибернейт сгенерит один запрос с джойном, его можно будет загнать в базу для проверки
Такой запрос сойдет как я выше написал? В бд нет повторяющихся пар страна-дата. Помоему кроме хибера тут проблема может быть только во мне и я не могу понять, что я делаю не так)
источник

РН

Роман Нагаев in Spring Framework and more
Oleg Pavl
Такой запрос сойдет как я выше написал? В бд нет повторяющихся пар страна-дата. Помоему кроме хибера тут проблема может быть только во мне и я не могу понять, что я делаю не так)
а покажи маппинги
источник

OP

Oleg Pavl in Spring Framework and more
Роман Нагаев
а покажи маппинги
Связь однонаправленная.
источник

РН

Роман Нагаев in Spring Framework and more
Oleg Pavl
Связь однонаправленная.
покажи целиком и обе сущности
источник

OP

Oleg Pavl in Spring Framework and more
Роман Нагаев
покажи целиком и обе сущности
Первая:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DailyStatistic {
   @Id
   @GeneratedValue
   private Long id;
   @Column(columnDefinition = "DATE")
   private LocalDate date;
   @ManyToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "country_id")
   private Country country;
   private int cases;
   private int deaths;
   private int recovered;
}
Вторая:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Country {

   @Id
   @GeneratedValue
   private Long id;
   private String name;
}
источник

AK

Artyom Krikheli in Spring Framework and more
Роман  а он же уже и через Long пытается селектить, без связей и джоинов
источник

РН

Роман Нагаев in Spring Framework and more
Oleg Pavl
Первая:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DailyStatistic {
   @Id
   @GeneratedValue
   private Long id;
   @Column(columnDefinition = "DATE")
   private LocalDate date;
   @ManyToOne(cascade = CascadeType.ALL)
   @JoinColumn(name = "country_id")
   private Country country;
   private int cases;
   private int deaths;
   private int recovered;
}
Вторая:
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Country {

   @Id
   @GeneratedValue
   private Long id;
   private String name;
}
а теперь добавь обеим сущностям @ToString и выведи их в консоль после того как они прилетели
источник

РН

Роман Нагаев in Spring Framework and more
Artyom Krikheli
Роман  а он же уже и через Long пытается селектить, без связей и джоинов
ага, в этом и странность, ни там ни там нет джоина, вродь негде ошибиться и сущности выглядят норм
источник

AK

Artyom Krikheli in Spring Framework and more
Роман Нагаев
а теперь добавь обеим сущностям @ToString и выведи их в консоль после того как они прилетели
можно не добавлять, там
@Data
:)
источник

РН

Роман Нагаев in Spring Framework and more
Artyom Krikheli
можно не добавлять, там
@Data
:)
тогда просто вывести)
источник

AK

Artyom Krikheli in Spring Framework and more
Роман Нагаев
ага, в этом и странность, ни там ни там нет джоина, вродь негде ошибиться и сущности выглядят норм
а может быть что-то с преобразованием часовых поясов? реально в БД данные в каком формате?
источник

AK

Artyom Krikheli in Spring Framework and more
в Entity используется LocalDate, не помню сейчас, как там дела с таймзоной обстоят
источник

OP

Oleg Pavl in Spring Framework and more
Роман Нагаев
а теперь добавь обеим сущностям @ToString и выведи их в консоль после того как они прилетели
Ну вот даты у списка на выходе сразу после выборки.
2020-03-29
2020-03-28
2020-03-27
2020-03-30
2020-03-29
источник

AK

Artyom Krikheli in Spring Framework and more
@super_java_man а можешь DDL таблицы DailyStatistic  скинуть?
источник

РН

Роман Нагаев in Spring Framework and more
Oleg Pavl
Ну вот даты у списка на выходе сразу после выборки.
2020-03-29
2020-03-28
2020-03-27
2020-03-30
2020-03-29
выведи именно коллекцию сущностей, странно ещё что дат меньше чем прилетает из запроса
источник

AK

Artyom Krikheli in Spring Framework and more
Oleg Pavl
Вроде так
у тебя же тут строк больше
источник