내 엔터티 용 스키마를 지정하면 이해할 수있는 것 (예 : here)에서 쿼리를 만들 때 해당 스키마 이름을 사용해야합니다. 내가의 실체가있는 경우스프링 부트 JPA가 쿼리의 테이블에 스키마 이름을 추가하지 않습니다.
그래서 :
@Entity
@Table(name="proposalstatuses",schema="sales")
public class ProposalStatus implements Serializable {
private static final long serialVersionUID = 1L;
private int proposalStatusID;
private String proposalStatusName;
public ProposalStatus() {}
public ProposalStatus(String proposalStatusName) {
this.proposalStatusName = proposalStatusName;
}
@Id
@Column(name="pk_proposalstatusid")
@GeneratedValue(strategy = GenerationType.AUTO)
public int getProposalStatusID() {
return proposalStatusID;
}
public void setProposalStatusID(int proposalStatusID) {
this.proposalStatusID = proposalStatusID;
}
@Column(name="proposalstatusname", unique=true, nullable=false)
public String getProposalStatusName() {
return proposalStatusName;
}
public void setProposalStatusName(String proposalStatusName) {
this.proposalStatusName = proposalStatusName;
}
}
을 그때 Hibernate가 select ... from sales.proposalstatuses
처럼 그 쿼리를 생성 할 것으로 예상한다.
select proposalst0_.pk_proposalstatusid as pk_propo1_8_, proposalst0_.proposalstatusname as proposal2_8_
from proposalstatuses proposalst0_
order by proposalst0_.proposalstatusname asc
이이 경우에 큰 문제가되지 않지만 지금은 다른 스키마의 테이블 조인을 사용할 수 있도록하려면, 그것은 테이블을 생각하기 때문에 그 실패 : 그러나, 대신 나는 참조 존재하지 않습니다 (기본 스키마에 포함되어 있지 않습니다).
그래서 하나의 데이터베이스 (하나의 연결)에 여러 스키마가 있습니다. Hibernate가 테이블을 참조 할 때 스키마 이름을 사용하게하려면 어떻게해야합니까? 그것은 매우 똑바로 앞으로해야하지만, 나는 뭔가를 놓치고 있어야합니다 것 같습니다.
감사합니다.
나는 Hibernate JPA 2.1과 Hibernate Core 5.0.12를 사용하는 Spring Boot 1.5.7을 사용하고있다. H2 데이터 소스를 사용하면이 작업이 가능합니다. MySQL이 데이터 소스 일 경우에만 문제가 발생합니다.
참조하려는 테이블의 기본 스키마에서보기를 만드는 방법에 대해 읽었습니다. 그러나 그것은 내가보기에 매우 많은 의견을 만들어야하기 때문에 가능한 선택 사항은 아닙니다. Hibernate가 그렇게 많은 노력을하지 않아도 이것을 처리 할 수 있어야합니다. URL에 스키마의 이름을 변경
spring.datasource.url=jdbc:mysql://localhost/sales?verifyServerCertificate=false&useSSL=true
spring.datasource.username=user
spring.datasource.password=pass
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
spring.datasource.testWhileIdle=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.show-sql=true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
날 스키마의 데이터에 액세스 할 수 있습니다,하지만 난 다른 스키마를 얻을 수 : 여기
는 application.properties에서 구성 설정입니다 URL에 나열된 것보다
그것이 이미 문제가되는 방법이 아닙니까? – eis
네, 첫 번째 옵션은 이미 가지고있는 방법입니다. 나는 두 번째 옵션을 먼저 시도했지만 그 중 하나는 작동하지 않는 것 같습니다. – Tim
"testschema"라는 스키마에서 "test"라는 테이블에 대해 두 번째 옵션을 사용하면 sales.testschema_test가 존재하지 않는다는 오류가 발생합니다. 따라서 테이블 어노테이션에 지정된 것과 관계없이 구성 URL의 스키마를 계속 사용하려고합니다. – Tim