스키마 유효성 검사로 인해 스프링 부트 프로젝트가 실행되지 못함: 시퀀스 누락 [hibernate_sequence]
Spring Boot and Hibernate 응용 프로그램을 실행하려고 하면 다음과 같은 이유로 인해 응용 프로그램이 중단되고 있습니다.
org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing sequence [hibernate_sequence]
하지만 최대 절전 모드 시퀀스를 사용하지 않기 때문에 왜 그런지 알 수 없습니다.아파치 더비에서 제 테이블은 다음과 같습니다.
CREATE TABLE TEAM (
TEAM_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
NAME VARCHAR(50) NOT NULL,
CONSTRAINT PK_TEAM PRIMARY KEY(Team_Id)
);
CREATE TABLE PLAYER (
PLAYER_ID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
NAME VARCHAR(50) NOT NULL,
NUM INTEGER NOT NULL,
POSITION VARCHAR(50) NOT NULL,
TEAM_ID INTEGER,
CONSTRAINT PK_PLAYER PRIMARY KEY(PLAYER_ID),
CONSTRAINT FK_PLAYER FOREIGN KEY(TEAM_ID) REFERENCES TEAM(TEAM_ID)
);
내 지원서의application.properties
파일:
# Hibernate table generation.
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DerbyTenSevenDialect
spring.jpa.show-sql=true
# Apache Derby settings
spring.datasource.driverClassName=org.apache.derby.jdbc.ClientDriver
spring.datasource.url=jdbc:derby://localhost:1527/Library
spring.datasource.username=username
spring.datasource.password=password`
관련된 두 가지 Java 클래스는 다음과 같습니다.
@Entity
@Table(name = "TEAM")
public class Team {
@Id
@Column(name = "TEAM_ID", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer teamId;
@Column(name = "NAME")
private String name;
@OneToMany(cascade = CascadeType.ALL,
fetch = FetchType.EAGER,
mappedBy = "team")
private List<Player> players;
그리고:
@Entity
@Table(name = "PLAYER")
public class Player {
@Id
@Column(name = "PLAYER_ID", unique = true, nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer playerId;
@Column(name = "NAME")
private String name;
@Column(name = "NUM")
private int num;
@Column(name = "POSITION")
private String position;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "TEAM_ID", nullable = true)
private Team team;
누가 내가 어디가 틀렸는지 조언해 줄 수 있습니까?
메이븐 종속성은 다음과 같습니다.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.14.2.0</version>
</dependency>
</dependencies>
시퀀스가 누락되어 문제가 발생했습니다.hibernate_sequence
다음을 사용하여 DB에 수동으로 시퀀스를 작성할 수 있습니다.create sequence <schema>.hibernate_sequence
시퀀스 생성에 대한 자세한 내용은Derby
링크를 따라오세요.
이 문제를 해결하고 다음은 검색 결과입니다.
사용하는 경우
GenerationType.AUTO
Java Bean에서는 기본적으로 최대 절전 모드를 사용hibernate_sequence
순서대로한 가지 방법은 다음과 같이 DB에 이 시퀀스를 만드는 것입니다.
create sequence <schema>.hibernate_sequence
또는 사용할 수 있습니다.
@GeneratedValue(strategy = GenerationType.IDENTITY)
대신 자바빈 소스 코드에서 이러한 시퀀스가 필요하지 않습니다.Java 지속성/아이덴티티 인용:
ID 순서 지정은 데이터베이스의 특수 IDENTITY 열을 사용하여 행이 삽입될 때 데이터베이스가 개체에 ID를 자동으로 할당할 수 있도록 합니다.ID 열은 MySQL, DB2, SQL Server, Sybase 및 Postgres와 같은 많은 데이터베이스에서 지원됩니다.Oracle은 IDENTITY 열을 지원하지 않지만 시퀀스 개체 및 트리거를 사용하여 시뮬레이션할 수 있습니다.
자세한 내용:
생성 유형.AUTO vs Generation Type.최대 절전 모드의 ID
언급URL : https://stackoverflow.com/questions/50659505/spring-boot-project-fails-to-run-because-of-schema-validation-missing-sequence
'programing' 카테고리의 다른 글
입력/쓰기를 중지한 후 입력 텍스트에서 이벤트를 트리거하는 방법은 무엇입니까? (0) | 2023.08.10 |
---|---|
최대 절전 모드, ID, 오라클, 시퀀스 (0) | 2023.08.10 |
하이픈 뒤에 줄 바꿈 없음 (0) | 2023.08.10 |
JQuery를 사용하여 입력 필드에 포커스를 설정하는 방법 (0) | 2023.08.10 |
도커 파일에서 도커 이미지로 폴더를 복사하는 방법은 무엇입니까? (0) | 2023.08.05 |