J'ai un projet Spring Boot avec une entité et un référentiel associés à cette entité. Dans le référentiel, il existe une méthode avec une requête personnalisée et dans le contrôleur de projet, ce référentiel est utilisé pour renvoyer des données de différentes bases de données postgresql. Ces bases de données ont les mêmes tables avec les mêmes colonnes (donc l'entité référencée est la même), la seule différence entre ces bases de données est l'année (..., DB2015, DB2016, DB2017). Mes questions sont: Comment puis-je retourner des données dans le contrôleur de projet qui appartiennent à des bases de données "différentes"? Est-il possible d'utiliser la même requête pour sélectionner des données initialement à partir de la première base de données, puis à partir de la seconde et ainsi de suite? Dans d'autres questions, j'ai lu que j'avais besoin de sources de données différentes, est-ce correct?Spring Boot - Même référentiel et même entité pour différentes bases de données
Ceci est l'entité:
@Entity(name = "REQUEST")
public class Request implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column(name="IDREQUEST", nullable=false)
private BigDecimal idrequest;
@Column(name="PAYLOAD")
private String payload;
@Column(name="MITTENTE")
private String mittente;
@Column(name="SERVIZIO")
private String servizio;
@Column(name="DATARICEZIONE")
private BigDecimal dataricezione;
public BigDecimal getIdrequest() {
return idrequest;
}
public void setIdrequest(BigDecimal idrequest) {
this.idrequest = idrequest;
}
public String getPayload() {
return payload;
}
public void setPayload(String payload) {
this.payload = payload;
}
public String getMittente() {
return mittente;
}
public void setMittente(String mittente) {
this.mittente = mittente;
}
public String getServizio() {
return servizio;
}
public void setServizio(String servizio) {
this.servizio = servizio;
}
public BigDecimal getDataricezione() {
return dataricezione;
}
public void setDataricezione(BigDecimal dataricezione) {
this.dataricezione = dataricezione;
}
}
Ceci est le dépôt:
@Repository
public interface RequestRepository extends PagingAndSortingRepository<Request, BigDecimal> {
@Query(nativeQuery=true, value="SELECT * FROM \"REQUEST\" WHERE strpos(\"PAYLOAD\",\'?1\') > 0")
List<Request> findByCodiceFiscale(String codiceFiscale);
}
Ceci est le contrôleur
@RequestMapping(value="/ricercaadesioni/{codicefiscale}", method=RequestMethod.GET)
public ResponseEntity<List<Request>> ricercaAdesioniByCodiceFIscale(@PathVariable("codicefiscale") String codicefiscale) {
List<Request> listAdesioni = requestRepo.findByCodiceFiscale(codicefiscale);
return new ResponseEntity<List<Request>>(listAdesioni, HttpStatus.OK);
}
Ceci est application.properties (dans ce cas, la source de données est référé à un db uniquement):
spring.datasource.url=jdbc:postgresql://localhost:5432/DB2017_test
spring.datasource.username=xxx
spring.datasource.password=xxx
tout espoir est clair
Vous pouvez définir plusieurs 'LocalContainerEntityManagerFactoryBean'beans avec chacun le datasource associé à la base de données voulue. – mrkernelpanic