【发布时间】:2020-04-06 12:00:57
【问题描述】:
我在从自定义查询访问数据时遇到问题。
这里是 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);
绑定到查询中的日期可以正常工作,我得到了 group by 的第一个结果,这样就解决了。问题是我在运行时遇到错误:
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 和计数分组。 我猜问题出在从存储库方法中突然出现的计数字段的转换中,而 Spring 也不知道要链接什么。
我尝试在这里使用只有一个 String serverName 和一个 Ingeter controlRunCount 的 RunListDTO,但没有成功 - 存储库接口不喜欢我在使用 .
当存储库进行计数时,有没有办法让它成为一个正在运行的自定义数组/对象?
问候, 贾雷克。
【问题讨论】:
标签: java spring spring-boot jpa count