我在通过自定义查询访问数据时遇到问题。
这里是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}';
[当我从CLI对其数据库使用SQL查询时,我得到了一个很好的serverName和count的分组。我猜测问题出在计数字段的转换中,该计数字段从存储库方法中突然弹出,Spring也不知道该如何链接。
[我尝试在这里使用仅具有String serverName和Ingeter controlRunCount且没有运气的RunListDTO-存储库接口不喜欢我在使用。创建的接口中使用的方法的输出中使用DTO。] >
当存储库计数时,有没有办法使它成为正在运行的自定义数组/对象?
关于,Jarek。
我在通过自定义查询访问数据时遇到问题。这是POJO:@Getter @Setter @NoArgsContructor @AllArgsConstructor @Entity @Table(name =“ run_list”)公共类RunList {...
由于您正在选择一个字段和一个计数,因此无法将其映射到您的实体,因此此查询返回您指定的值的数组,就像您在例外中看到的那样:'{server1,14} '