OiO.lk Blog java Java WebFlux r2dbc might not have been inizialized repository interface
java

Java WebFlux r2dbc might not have been inizialized repository interface


I m building a Java SpringBoot Application with WebFlux.
So in this application I need to make some APIs to get data from database TSQL using r2dbc.

So I create this code, this is my interface Repository:

import it.silver.data.pojo.Percorsi;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import reactor.core.publisher.Flux;

public interface PercorsiRepository extends ReactiveCrudRepository<Percorsi, Integer> {

    @Query("SELECT * FROM PRC_Percorsi")
    Flux<Percorsi> getRepository();
}

This is my Percorsi class that map table:

import lombok.*;
import org.apache.james.mime4j.dom.datetime.DateTime;
import org.springframework.data.annotation.Id;

@Data
@ToString
@Builder
@AllArgsConstructor
@Table(schema = "PRC_Percorsi")
public class Percorsi {
    @Id
    @Column(name = "ID")
    private Integer id;

    @Column(name = "Nome")
    private String nome;

    @Column(name = "Descrizione")
    private String descrizione;

    @Column(name = "IDPaese")
    private Integer idPaese;
    @Column(name = "IDRegione")
    private Integer idRegione;
    @Column(name = "IDProvincia")
    private Integer idProvincia;
    @Column(name = "IDComune")
    private Integer idComune;
    @Column(name = "Distanza")
    private Double distanza;
    @Column(name = "IDLivelloDifficolta")
    private Integer idLivelloDifficolta;
    @Column(name = "AltitudineMax")
    private Double altitudineMax;
    @Column(name = "AltitudineMin")
    private Double altitudineMin;
    @Column(name = "IDTipoPercorso")
    private Integer idTipoPercorso;
    @Column(name = "TempoMovimento")
    private Integer tempoMovimento;
    @Column(name = "TempoTotale")
    private Integer tempoTotale;
    @Column(name = "Dislivello")
    private Integer dislivello;
    @Column(name = "NVisualizzazioni")
    private Integer nVisualizzazioni;
    @Column(name = "NVisitatori")
    private Integer nVisitatori;
    @Column(name = "MapName")
    private String mapName;
    @Column(name = "MapPath")
    private String mapPath;
    @Column(name = "CreationUserId")
    private Integer creationUserId;
    @Column(name = "CreationDate")
    private DateTime creationDate;
    @Column(name = "LastChangeUserId")
    private Integer lastChangeUserId;
    @Column(name = "LastChangeDate")
    private DateTime lastChangeDate;
    @Column(name = "FileStateID")
    private Integer fileStateId;

}

This is my Handler class that which exposes the methods to be called externally:

import lombok.extern.slf4j.Slf4j;
import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.admin.client.resource.UsersResource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import org.springframework.util.RouteMatcher;
import org.springframework.web.reactive.function.BodyInserters;
import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.ArrayList;
import java.util.List;

import static org.springframework.http.MediaType.APPLICATION_JSON;
import static org.springframework.web.reactive.function.BodyInserters.fromObject;

@Slf4j
@Component
public class SilverMountainHandler extends AbstractTenantAwareHandler {

    @Autowired
    private KeycloakClientProvider clientProvider;

    @Autowired
    private KeycloakProperties keycloakProperties;

    @Autowired
    private ServiceProperties serviceProperties;

    @Autowired
    private ObjectMapper objectMapper;

    private final PercorsiRepository percorsiRepository;


    protected SilverMountainHandler(final ServiceProvider serviceProvider) {
        super(serviceProvider);
    }

    private SilverMountainService silverMountainService(final UserInfo userInfo) {
        return super.getService(userInfo, SilverMountainService.class);
    }

    public Mono<ServerResponse> routes(final ServerRequest request) {
        Flux<Percorsi> people = this.percorsiRepository.findAll();
        return people.collectList().flatMap(p->
                p.size() < 1 ?
                        ServerResponse.status(404).build()
                        :ServerResponse.ok().contentType(APPLICATION_JSON).body(fromObject(p))
        );
    }
    // endregion
}

Now I have this issue:

how can I fixed it?



You need to sign in to view this answers

Exit mobile version