【发布时间】:2021-10-13 16:39:08
【问题描述】:
public class UserList {
private String id;
private String email;
private String userType;
private String rolls;
private String partner;
private Integer customersLinked;
private String position;
private String status;
@Autowired
ICustomerRepository customerRepository;
public UserList (Users user){
this.id = user.getId();
this.email = user.getEmail();
this.userType = user.getUserType();
this.rolls = user.getRolls();
this.partner = user.getPartner();
List<Customer> customersLinked = customerRepository.findAllByLinkedUsersIn(user.getId());
this.customersLinked = 0;
this.position = user.getPosition();
this.status =user.getStatus();
}
//Getter and Setter
}
这个类在前端用作列表,获取特定数据,而不是发送所有数据
@RequestMapping(value = "usersLinked/{id}/{type}", method = RequestMethod.GET)
public Object getUsersLinkedById(@PathVariable("id") String id,@PathVariable("type") Integer type) {
List<String> users = null;
switch (type) {
case 0:
users = usersRepository.findAll().stream().map(m -> m.getId()).collect(Collectors.toList());
break;
}
//Add userList
List<UserList> userList = new ArrayList<>();
if(users != null)
{
users.forEach(userId ->
{
Optional<Users> user = this.usersRepository.findById(userId);
userList.add(new UserList(user.get()));
});
}
return userList;
}
}
正如您从上面看到的,我正在调用用户存储库中的所有数据并将其发送到列表
我的客户存储库
public interface ICustomerRepository extends MongoRepository<Customer, String> {
Customer findByBusinessInformation_businessName(String businessName);
List<Customer> findByBusinessInformation_partnerAssigned(String partnerAssigned);
@Query("{ 'LinkedUsers' : ?0 }")
Customer findByLinkedUsers(String id);
List<Customer> findAllByLinkedUsersIn(String id);
}
在 userList 中,当我使用 customerRepository 添加逻辑时出现错误,没有存储库,一切正常(想使用存储库获取客户数组,然后获取数组的 size() 并添加它给linkedCustomers)。我是不是错过了什么
【问题讨论】:
-
UserList不是 spring bean,所以你不能@Autowire存储库到它(它将始终为空)。 -
正如@pleft 所说,您缺少
UserList和ICustomerRepository的bean 定义。那应该可以解决您的问题。 -
@pleft ,感谢您的回复,所以我应该将我的 userList 类更改为 bean 类型。对我应该做什么有点困惑
标签: java spring spring-boot repository