У меня проблема с доступом к данным из пользовательского запроса.
Вот это POJO:
@Getter
@Setter
@NoArgsContructor
@AllArgsConstructor
@Entity
@Table(name = "run_list")
public class RunList {
@Id
@Column(name = "id")
private Long id;
@Column(name = "control_run_name"
private String serverName;
@Column(name = "control_run_date"
private Date controlRunDate
<.. bunch of other fields .. >
Вот хранилище:
public interface RunListRepository extends JpaRepository<RunList, Long> {
@Query("SELECT u.serverName,count(u) as controlRunCount from RunList u where u.controlRunDate < :lastUploadDate group by u.serverName")
List<RunList> findAllControlRunAfterDate(@Param("lastUploadDate") Date lastUploadDate);
В контроллере я вызываю метод репозитория следующим образом:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2020-03-01");
model.addAttribute("runList",runListRepository.findAllControlRunAfterDate(date);
Привязка к дате в запросе работает нормально, я получаю первый результат группы, так что это решается. Дело в том, что я получаю сообщение об ошибке при выполнении этого:
Failed to convert from type[java.lang.Object[]] to type [@org.springframework.data.jpa.Query my.package.name.RunList} for value '{server1,14}';
Когда я использую запрос SQL к базе данных из ее CLI, я получаю хорошую группу serverName и счетчика. Я предполагаю, что проблема в преобразовании поля count, которое появляется из ниоткуда из метода репозитория, и Spring не знает, что связать это тоже.
Я пытался использовать RunListDTO здесь только String serverName и Ingeter controlRunCount без удачи - интерфейсу хранилища не понравился я, использующий DTO при выводе метода, используемого в интерфейсе, созданном с помощью.
Есть ли способ сделать этот пользовательский массив / объект в полете, когда хранилище считает?
С уважением, Ярек.