【发布时间】:2021-06-09 04:14:20
【问题描述】:
我的目标是使用 'UsersMapper' MyBatis Mapper 填充 UserDto POJO。
public class UserDto {
private String username;
private String password;
private List<String> authorities;
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public Set<SimpleGrantedAuthority> getAuthorities() {
return authorities.stream()
.map(SimpleGrantedAuthority::new)
.collect(Collectors.toSet());
}
}
@Mapper
public interface UsersMapper {
@Select("SELECT users.username, users.password, role_authorities.authority " +
"FROM users " +
"JOIN role_members ON role_members.username = users.username " +
"AND users.username=#{username} " +
"JOIN role_authorities ON role_authorities.role_uuid = role_members.role_uuid")
Optional<UserDto> getUsers(String username);
}
我的预期结果是:MyBatis 成功填充UserDto POJO。
我的实际结果是我遇到了异常
org.springframework.security.authentication.InternalAuthenticationServiceException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 3
【问题讨论】:
标签: java mysql spring spring-boot mybatis