gpt4 book ai didi

java - Spring JPA 存储库转换器未找到

转载 作者:行者123 更新时间:2023-11-30 06:11:18 25 4
gpt4 key购买 nike

我有一个实体类UserModel.java

@Entity
@Table
@Data
@EqualsAndHashCode( of = { "id" } )
@ToString( of = { "id" } )
public class UserModel {

@Id
@GeneratedValue( strategy = GenerationType.AUTO )
@Column( name = "u_id" )
private Long id;

@Column( name = "u_first_name" )
private String firstName;

@Column( name = "u_last_name" )
private String lastName;

@Column( name = "u_email_id" )
private String emailId;

@Column( name = "u_password" )
private String password;

@Column( name = "u_mobile_number" )
private String mobileNumber;

@Column( name = "u_created_at" )
private Calendar createdAt;

@Column( name = "u_is_active" )
private Boolean isActive;

@Column( name = "u_reason" )
private String reason;


}

我需要根据每列中包含的值获取一些统计信息。所以我创建了一个JPQL查询和我映射到另一个 Entity 的结果类UserStatisticsModel.java

@Data
@Entity
public class UserStatisticsModel {

@Id
@Column
private Integer id;

@Column
private Integer activeUsers;

@Column
private Integer suspendedUsers;

@Column
private Integer removedUser;
}

我创建了一个存储库类来执行查询。

public interface UserStatisticsRepository extends JpaRepository<UserStatisticsModel, Integer> {

@Query( " Select sum(case when u.isActive is true then 1 else 0 end) as activeUsers, "
+ " sum(case when u.isSuspended is true then 1 else 0 end) as suspendedUsers, "
+ " sum(case when u.isActive is false then 1 else 0 end) as removedUser"
+ " from UserModel u " + " where u.accountStatus <>5" )
UserStatisticsModel getUserStatistics();

}

但是在执行查询时我遇到了异常。虽然根据日志查询正在执行并且值是完美的,但映射失败。

Caused by: org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [java.lang.Integer] to type [com.highpeak.tlp.datastore.model.UserStatisticsModel]
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:324)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:206)
at org.springframework.core.convert.support.ArrayToObjectConverter.convert(ArrayToObjectConverter.java:66)
at org.springframework.core.convert.support.ConversionUtils.invokeConverter(ConversionUtils.java:37)
... 125 common frames omitted

谁能解释一下这个错误是什么以及如何修复它?

可用的解决方案:

  1. 我可以在 UserModel.java 中创建这些字段但我不想在该类中创建这些字段。

  2. 我还可以创建一个 native 查询,它会起作用

更新如果我将查询的返回类型更改为 List<Integer> ,我没有收到任何异常,并且得到了正确的结果。但为什么我不能将这些整数映射到我的 @Entity 的字段类UserStatisticsmodel.java

最佳答案

您的查询就是问题所在。您说选择 1 作为 id,但您想返回一个UserStatisticsModel。因此,您必须修复查询或更改方法签名以返回 Integer

关于java - Spring JPA 存储库转换器未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50177517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com