我有一個Spring Boot項目,其中一個實體和一個存儲庫與此實體關聯。在存儲庫中有一個使用自定義查詢的方法,而在項目控制器中,此存儲庫用於從不同的postgresql數據庫返回數據。這些數據庫具有相同的表,並且具有相同的列(因此所引用的實體是相同的),這些數據庫之間的唯一區別是年(...,DB2015,DB2016,DB2017)。 我的問題是:我如何返回屬於「不同」數據庫的項目控制器中的數據?是否可以使用相同的查詢從第一個數據庫開始選擇數據,然後從第二個數據庫等選擇數據? 在其他問題我讀過,我需要不同的數據源,這是正確的?Spring Boot - 同一個存儲庫和不同數據庫的相同實體
這是實體:
@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;
}
}
這是存儲庫:
@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);
}
這是控制器
@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);
}
這是application.properties(在這種情況下的數據源僅指一個分貝):
spring.datasource.url=jdbc:postgresql://localhost:5432/DB2017_test
spring.datasource.username=xxx
spring.datasource.password=xxx
希望一切都清楚了
您可以定義多個'LocalContainerEntityManagerFactoryBean'beans,每個''具有與所需數據庫關聯的數據源。 – mrkernelpanic