단일 데이터 소스를 가진 "간단한"Spring Boot 애플리케이션이있다.Hibernate는 다른 스키마에서 이미 사용 가능할 때 시퀀스를 생성하지 않는다.
@Id
@GeneratedValue(strategy = SEQUENCE, generator = "seq-pooled-lo")
@GenericGenerator(
name = "seq-pooled-lo",
strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
parameters = {
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.INCREMENT_PARAM,
value = "50"
),
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.OPT_PARAM,
value = "pooled"
),
@org.hibernate.annotations.Parameter(
name = SequenceStyleGenerator.SEQUENCE_PARAM,
value = "seq_pooled_lo_sequence"
)
})
이제 내 문제는 다음이다
spring:
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
default_schema: CORE
flyway:
schemas:
- CORE
하고 다음 ID 생성기 : 다음 구성 내 구성에 존재하는 나는이 응용 프로그램을 실행하면
것은, 그것은 만들 것 시퀀스 "CORE"스키마. 모든 것이 잘 작동합니다. 데이터 저장, 검색은 문제가되지 않습니다. 그런 다음 앱의 두 번째 인스턴스를 실행하지만 YAML 파일을 재정 의하여 다른 default_schema: SECOND
을 정의하면 "SECOND"스키마에 새 시퀀스가 생성되지 않습니다. 먼저 "SECOND"스키마를 정의한 상태로 앱을 시작한 다음 "CORE"로 시작하면 "CORE"가 아닌 "SECOND"스키마에 시퀀스가 작성됩니다.
두 스키마에서 서로 다른 시퀀스를 생성 할 것으로 예상됩니다. 왜 그렇게하지 않습니까?
필자는 누락 된 스키마에 시퀀스를 수동으로 추가하려고했지만 슬프게도 도움이되지 않는 것으로 보입니다.
를 사용하여 당신의 엔티티 만 편집 전략을 반환 내가 정말 CustomIdGenerator가 필요하십니까? 나는 순진한 접근 방식이 내가 해낸 것처럼 왜 작동하지 않는지 알고 싶다. – Traspler