Spring JpaRepository с использованием EntityGraph возвращает значение NULL вместо Optional

Вызов этого метода:

 @EntityGraph(attributePaths = "permissionGroups")
 Optional<User> findOneWithPermissionGroupsByLogin(String login);

При несуществующем входе пользователя в систему возвращается null вместо Optional.of(null), Я хотел бы выяснить, что я должен добавить, чтобы получить опциональную перепродажу?

более полный код:

вместилище

public interface UserRepository extends JpaRepository<User, Long> 
{
  Optional<User> findOneByLogin(String login);

  @EntityGraph(attributePaths = "permissionGroups")
  Optional<User> findOneWithPermissionGroupsByLogin(String login);
}

Пользовательский объект

это соответствующий код объекта пользователя

@Entity
@Table(name = "jhi_user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User extends AbstractAuditingEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

@NotNull
@Pattern(regexp = Constants.LOGIN_REGEX)
@Size(min = 1, max = 50)
@Column(length = 50, unique = true, nullable = false)
private String login;

@JsonIgnore
@ManyToMany
@JoinTable(
    name = "jhi_user_authority",
    joinColumns = {@JoinColumn(name = "user_id", referencedColumnName = "id")},
    inverseJoinColumns = {@JoinColumn(name = "authority_name", referencedColumnName = "name")})
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@BatchSize(size = 20)
private Set<Authority> authorities = new HashSet<>();

@ManyToMany
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JoinTable(name = "euser_permission_group",
    joinColumns = @JoinColumn(name="eusers_id", referencedColumnName="id"),
    inverseJoinColumns = @JoinColumn(name="permission_groups_id", referencedColumnName="id"))
private Set<PermissionGroup> permissionGroups = new HashSet<>();

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getLogin() {
    return login;
}

//Lowercase the login before saving it in database
public void setLogin(String login) {
    this.login = login.toLowerCase(Locale.ENGLISH);
}

public Set<Authority> getAuthorities() {
    return authorities;
}

@Override
public boolean equals(Object o) {
    if (this == o) {
        return true;
    }
    if (o == null || getClass() != o.getClass()) {
        return false;
    }

    User user = (User) o;

    return login.equals(user.login);
}

@Override
public int hashCode() {
    return login.hashCode();
}

0 ответов

Другие вопросы по тегам