我正在尝试编写一个扩展CrudRepository的接口,它将返回一个特定字段的列表。当我使用该方法时,我得到了ConverterNotFoundException。我有两个问题:
1.如果我想要包含特定字段的列表,是否有特定的Sping Boot 查询?
1.我是否正确实现了转换器?我不确定如何调用WebConfig。
// EmployeeRepository.java
@Repository
public interface EmployeeRepository extends CrudRepository<Employee, Long> {
List<String> findByEmployeeId(String employeeId); // ConverterNotFoundException. Expecting list of employee's full name
}
// EmployeeToStringConverter.java
@Component
public class EmployeeToStringConverter implements Converter<Employee, String> {
@Override
public String convert(Employee source) {
return source.getFullName();
}
}
// WebConfig.java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addFormatters(FormatterRegistry registry) {
registry.addConverter(new EmployeeToStringConverter());
}
}
// Employee.java
@Entity
@Data
@NoArgsConstructor
@Getter
@Table(name = "employees")
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="Id")
private Long id;
@Column(name="FullName")
private String fullName;
@Column(name="NickName")
private String nickName;
public HubKey(String fullName, String nickName) {
this.fullName = fullName;
this.nickName = nickName;
}
}
// Exception when calling EmployeeRepository.findByEmployeeId()
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type [com.jon.demo.domain.entity.Employee] to type [java.lang.String]
1条答案
按热度按时间wbgh16ku1#
您在WebMvcConfigurer中注册的转换器用于格式化视图(MVC中的视图)中的数据。
您应该向Spring Data相关的自定义转换bean添加转换器,每个Spring Data子项目都有自己的注册条目。
请阅读Spring Data相关文档。