하나의 엔티티와 하나의 저장소가이 엔티티에 연결된 스프링 부트 프로젝트가 있습니다. 저장소에는 사용자 지정 쿼리가있는 방법이 하나 있으며 프로젝트 컨트롤러에서이 저장소는 다른 postgresql 데이터베이스의 데이터를 반환하는 데 사용됩니다. 이러한 데이터베이스는 동일한 열이있는 동일한 테이블을 가지므로 (참조 된 엔터티는 동일 함) 이러한 데이터베이스 간의 유일한 차이는 연도 (..., DB2015, DB2016, DB2017)입니다. 내 질문은 : 어떻게 "다른"데이터베이스에 속하는 프로젝트 컨트롤러에서 데이터를 반환 할 수 있습니까? 같은 쿼리를 사용하여 첫 번째 데이터베이스에서 데이터를 선택한 다음 두 번째 데이터베이스에서 데이터를 선택할 수 있습니까? 다른 질문에 나는 다른 데이터 소스가 필요하다는 것을 읽었습니다. 이것이 맞습니까?스프링 부트 (Spring Boot) - 다른 데이터베이스에 대한 동일한 저장소와 동일한 엔티티
@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);
}
이 제어기이 application.properties이다
@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);
}
이다 (이 경우, 데이터 소스에이 저장소이다
@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;
}
}
:
이
는 실체 1 db 만 참조) :spring.datasource.url=jdbc:postgresql://localhost:5432/DB2017_test
spring.datasource.username=xxx
spring.datasource.password=xxx
희망의 모든
각''LocalContainerEntityManagerFactoryBean'beans는 원하는 데이터베이스와 연관된 dataSource가있는 각각 정의 할 수 있습니다. – mrkernelpanic