시퀀스 "HIbernATE_SEQUENCE"를 찾을 수 없습니다. SQL 문
저의 봄 mvc 앱에는 다음과 같은 객체가 있습니다.다음을 사용하여 데이터를 시각화하려고 합니다.devtool
내 앱에서.
@Entity
@Data
public class ConsultationRequest {
@Id
@GeneratedValue
private Long id;
private String name;
private String email;
private String purpose;
private String programme;
private int year;
private String language;
private String comments;
@Enumerated(EnumType.STRING)
private ConsultationStatus status;
}
그런 다음 jpa를 사용하여 엔티티를 만들었습니다.
@Repository
public interface ConsultationRequestRepository extends JpaRepository<ConsultationRequest, Long> {
}
문제는 애플리케이션을 로드할 때 두 가지 오류가 발생한다는 것입니다.
Unsuccessful: drop sequence hibernate_sequence
[36morg.hibernate.tool.hbm2ddl.SchemaExport Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:
그러면 제가 열었을 때.
http://localhost:8080/h2-console/
테이블이 보이지 않습니다.부팅 과정에서 테이블이 만들어지지 않은 것 같습니다.
아래와 같이 코드를 업데이트합니다.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
시퀀스 테이블 이름을 지정하지 않았기 때문에 최대 절전 모드에서는 hibernate_sequence라는 이름의 시퀀스 테이블을 검색하여 기본값으로 사용합니다.
Oracle/Postgres의 경우 사용되는 증분 필드는 시퀀스 테이블입니다.
MySql에는 자동으로 증분되는 증분 필드가 있습니다.
Spring Boot testing(H2 사용)에서 이 오류가 발생하는 경우 application.properties(또는 사용 중인 프로필)에서 다음을 사용해야 합니다.
spring.jpa.hibernate.ddl-auto=create-drop
속성 파일에서 다음 속성을 설정하면 문제를 해결하는 데 도움이 됩니다.hibernate_sequence
최대 절전 모드 5.4V 문제
spring:
jpa:
hibernate:
use-new-id-generator-mappings: false
확인.persistence.xml
property name="hibernate.hbm2ddl.auto" value="create"
것은 아니다.hdm2ddl
제 경우에는 효과가 있었습니다.
앱 스프링 부팅을 시작할 때 SQL 작업 오류가 발생했습니다.
스프링 속성에 설정을 추가하여 해결했습니다. 봄에:jpa.create.ddl-auto= create-drop을 최대 절전 모드로 전환하여 테이블을 자동으로 만들거나 삭제할 수 있습니다.
liquidbase와 함께 두 번째 캐시를 사용하는 경우 다음과 같이 변경 로그에 시퀀스를 추가해야 합니다.
<changeSet author="liquibase-docs"
id="createSequence-example">
<createSequence catalogName="cat" cycle="false"
incrementBy="1" ordered="true" schemaName="public"
sequenceName="hibernate_sequence" startValue="0" />
</changeSet>
위해서spring-boot
2.7.x
그리고.h2
2.x
추가해야 합니다.MODE=LEGACY;
데이터베이스 연결:
예제 application.yml:
spring:
datasource:
url: jdbc:h2:mem:test;MODE=LEGACY;
application.properties 예제:
spring.datasource.url=jdbc:h2:mem:test;MODE=LEGACY;
리포지토리를 테스트하는 동안 이 문제가 발생하는 경우 아래와 같은 코드를 변경하면 다음과 같은 작업에 도움이 될 수 있습니다.
이로부터:
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
대상:
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
몇 가지 테스트를 실행하는 동안 이 문제가 발생했습니다.이러한 주석을 추가하여 문제를 해결할 수 있었습니다.
@Transactional
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
와 함께
spring.jpa.hibernate.use-new-id-generator-mappings=false
test-config.properties에서 작동합니다.
Mysql의 경우:
자동 검색기가 추가되지 않았습니다. 표를 수정하십시오.
ALTER TABLE_name 열 ID BIGINT AUTO_INCREMENT=1
언급URL : https://stackoverflow.com/questions/39807483/sequence-hibernate-sequence-not-found-sql-statement
'programing' 카테고리의 다른 글
텍스트 편집에서 커서 위치를 설정하는 방법은 무엇입니까? (0) | 2023.08.24 |
---|---|
AJAX 페이지 다운로드 진행률 (0) | 2023.08.24 |
XMLHttpRequest를 통해 파일을 멀티파트로 보냅니다. (0) | 2023.08.24 |
노드 모듈에서 폰트 어썸 아이콘을 사용하는 방법 (0) | 2023.08.24 |
ExpressJS - 로더 처리되지 않은 오류 이벤트 (0) | 2023.08.24 |