我正在测试 Spring Boot 批处理应用程序。我正在使用内存中的 H2 DB,我想用一些数据对其进行初始化,但它因Unique index or primary key violation: PRIMARY_KEY_7 ON ....
我试过调整application.properties,添加和删除
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.default_schema=AD1
还调整了spring.datasource.url.
实体如下:
@Table(schema = "ad1",name = "Student")
public class Student {
@Id
@Column(name = "student_id")
private String studentId;
@Column(name = "student_name")
private String studentName;
@Column(name = "favourite_subject")
private String favouriteSubject;
@Column(name = "enrollment_date")
private LocalDate enrollmentDate;
}
要注意的是该schema属性已设置为ad1
data-h2.sql住的地方src/test/resources如下:
Insert into ad1.Student (student_id,student_name,favourite_subject,enrollment_date) values ('1151AB26','John','Math',to_date('01-JAN-19','DD-MON-RR'));
application.properties同样在src/test/resources如下:
spring.datasource.platform=h2
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS AD1
spring.datasource.username=sa
spring.datasource.password=sa
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.default_schema=AD1
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.batch.job.enabled=false
要注意的是spring.datasource.url=jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;MODE=Oracle;INIT=CREATE SCHEMA IF NOT EXISTS AD1. 我必须将架构初始化为 AD1
我正在使用 Cucumber,所以我有一个 Cucumber 测试类:
@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources", plugin = { "pretty", "html:target/cucumber" })
public class CucumberTest {
哆啦的时光机
相关分类