2016-10-27 3 views
1

포스트 그레스 대신 테이블의 순서를 기대 감지 될 수 있습니다. 이 내 로컬의 SQLServer 익스프레스뿐만 아니라 단위 테스트에 사용되는 H2 데이터베이스 작동Hibernate는 내 ID 생성 정의한

<changeSet author="david (generated)" id="1477051164467-23"> 
    <createTable tableName="hibernate_sequences"> 
     <column name="sequence_name" type="varchar(255)"> 
      <constraints nullable="false"/> 
     </column> 
     <column name="sequence_next_hi_value" type="bigint"/> 
    </createTable> 
</changeSet> 

: 같은 hibernate_sequences에 대한 liquibase 정의 보인다. Postgres와 함께 dev 서버에 애플리케이션을 배치 할 때 hibernate는 시퀀스 테이블을 사용하는 대신 데이터베이스 시퀀스를 기대한다. org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing sequence [hibernate_sequence] 나는 TableGenerator 전략을 사용하는 것이 어떤 데이터베이스에도 시퀀스를 필요로하지 않을 것이라고 생각했다. 우리는 그래서 휴대용 솔루션을 필요로 생산에 사용됩니다 어떤 데이터베이스 모르는이 시점에서 최대 절전 모드 5.0.11.Final

와 봄 부팅을 사용

. (최소한 오라클, MsSQL, Postgres, MySql을 지원합니다 ... 사실 거의 모든 것)

업데이트 : 로컬 포스트그레스를 설치하고 시퀀스를 추가하여 사용했는지 확인합니다. 그것은 실제로 사용됩니다 (카운터 3입니다)하지만 나는 어떤 실체에 의해 단서가 없습니다. 엔티티 감사를 위해 최대 절전 모드를 사용할 수도 있습니다. revinfo 테이블은 별도의 시퀀스를 사용하지만 이것은 liquibase에 의해 생성됩니다. 정보가있다

는 최대 절전 모드 envers 기본 엔티티 따라서 순서 사전에

감사의 필요성을 @GeneratedValue를 사용합니다. 더 많은 정보가 필요하시면 언제든지 물어보십시오.

답변

0

엔티티를 검토하고 모두가 org.hibernate.id.enhanced.TableGenerator을 사용하는지 확인하십시오. 이것이 유일한 원인 일 수 있습니다. https://github.com/hibernate/hibernate-orm/blob/5.0.11/hibernate-core/src/main/java/org/hibernate/id/enhanced/TableGenerator.java#L662을 살펴보면 시퀀스가 ​​필요 없음을 알게 될 것입니다.

+0

안녕하세요, 귀하의 답변에 감사드립니다. 나는 이것을 조사해야한다. 이 기본 클래스에서 상속받지 않는 엔티티가 있지만 ID를 생성하지 않고 단지'@ Id' 주석을 사용합니다. – deekay

+0

당신이'@ GeneratedValue'를 가진 또 다른 엔티티가 있다는 사실에 대해 당신이 옳았 기 때문에 나는 당신의 대답을 받아들입니다. 그것은 단지 내 자신의 코드가 아니라 최대 절전 모드에 있습니다. – deekay