2017-09-06 6 views
0

스프링 부트 애플리케이션이 시작된 후 몇 가지 테스트 데이터를 삽입하려고합니다. 나는 아래의 구성을 가지고있다. JPA 엔티티가 작성되기 전에 SQL 스크립트가 실행되어 삽입 문이 실패 함을 알 수 있습니다. 여기에 누락 된 다른 구성이 있습니까? 내 구성에서 언급했듯이 JPA 용 H2 및 EclipseLink와 함께 Spring Boot를 사용하고 있습니다.스프링 부트 데이터 초기화

참조 https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

구성

data.sql이/SRC/메인/자원 아래에 배치됩니다
# H2 
spring.h2.console.enabled=true 
# Datasource 
spring.datasource.url=jdbc:h2:mem:testdb;MODE=ORACLE 
spring.datasource.username=sa 
spring.datasource.password= 
spring.datasource.driver-class-name=org.h2.Driver 
# JPA 
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true 
spring.jpa.properties.eclipselink.weaving=false 

로그

2017-09-05 20:37:37,989 [restartedMain ] INFO 
o.s.j.d.e.EmbeddedDatabaseFactory   - Starting embedded database: 
url='jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', 
username='sa' 
2017-09-05 20:37:38,141 [restartedMain ] INFO 
j.LocalContainerEntityManagerFactoryBean - Building JPA container 
EntityManagerFactory for persistence unit 'default' 
2017-09-05 20:37:38,446 [restartedMain ] INFO 
o.s.o.j.AbstractEntityManagerFactoryBean - Initialized JPA 
EntityManagerFactory for persistence unit 'default' 
2017-09-05 20:37:38,510 [restartedMain ] INFO o.s.j.d.i.ScriptUtils      
- Executing SQL script from URL [file:/develop/src/data-init/target/classes/data.sql] 
error... 

법인

@Entity 
@Table(name = "TEMPLATE_CONFIG") 
@Data 
public class TemplateUser { 

    @Id 
    @Column(name = "TEMPLATE_CONFIG_ID", nullable = false) 
    private Long configId; 

    @Column(name = "APP_CODE", nullable = false, length = 100) 
    private String appCode; 
    ... 
} 

업데이트

업로드 샘플 프로젝트 : https://git.io/v5SWx

+0

엔티티의 모양을 게시 할 수 있습니까? @Entity annotation이 붙어 있어야합니다. –

+0

엔티티가 추가되었습니다. – Srini

+0

'spring.jpa.hibernate.ddl-auto : create' 속성도 설정해 보았습니까? https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-jpa –

답변

0

봄 부팅로드 data.sql 또는 데이터 - $ {뭔가를해야만} .SQL

할 수있는 작업 :

  • spring.datasource.platform = h2.
  • spring.datasource.data = myscript-test.sql. (위치는이 속성으로 변경할 수 있습니다)

나는 그런 식으로 프로젝트를 진행 중이며 h2로 작업 중입니다.

마지막 대체 방법으로 정보를로드 할 수없는 경우 jdbc 템플릿을 사용하여 응용 프로그램 파일에서 CommandLineRunner를 사용할 수 있습니다.

+0

나는 data.sql의 로딩에 문제가 없습니다. 그것은 sql이 실행되는 순서입니다 .Sql은 테이블이 생성되기 전에 실행되는 것처럼 보입니다. 문제를 강조하는 샘플 프로젝트에 대한 링크를 제공했습니다. – Srini

-1

프로젝트에서 최대 절전 모드를 사용하는 경우, 당신은 클래스 패스에 import.sql 사용할 수 있습니다. 테이블이 작성된 후에 만 ​​데이터베이스를 초기화합니다.

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-hibernate

+0

솔루션에 대한 링크는 환영 할 만하지만 답변이 없으면 유용합니다. [링크 주변에 컨텍스트 추가] (// meta.stackexchange.com/a/8259) 그래서 동료 사용자는 그것이 무엇인지, 왜 있는지, 그리고 그것이 존재하는 이유를 알게 될 것입니다. 그러면 대상 페이지를 사용할 수 없을 때를 위해 링크하고있는 페이지의 가장 관련있는 부분을 인용하십시오. [링크 삭제 될 수 있습니다.] (// stackoverflow.com/help/deleted-answers) – geisterfurz007

+0

이 링크가 질문에 대답 할 수 있지만 여기에 답변의 핵심 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 무효가 될 수있다. 연결된 페이지가 변경된 경우. - [리뷰에서] (리뷰/저품절 포스트/18849877) –

관련 문제