Java H2不获取具有关系的字段
我正在编写基于查询从数据库中获取正确数据的测试 测试配置文件的My application-test.properties为:Java H2不获取具有关系的字段,java,spring-data-jpa,h2,spring-test,Java,Spring Data Jpa,H2,Spring Test,我正在编写基于查询从数据库中获取正确数据的测试 测试配置文件的My application-test.properties为: spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1 spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=sa spring.datasource.d
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa
spring.datasource.data=data-test.sql
spring.datasource.schema=schema-test.sql
spring.jpa.hibernate.ddl-auto=create
schema-test.sql:
CREATE TABLE main_table (
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
name VARCHAR(50) NOT NULL
);
CREATE TABLE main_table_field (
main_table_id INT NOT NULL,
field VARCHAR(50) NOT NULL,
PRIMARY KEY (main_table_id, field),
FOREIGN KEY (main_table_id) REFERENCES main_table(id)
);
data-test.sql
INSERT INTO main_table VALUES (1, 'name1');
INSERT INTO main_table_field VALUES (1, 'field1');
INSERT INTO main_table_field VALUES (1, 'field2');
实体:
@Entity
public class MainTable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String name;
@ElementCollection
private List<String> field;
}
测试失败,因为字段的大小为0。列表是空的。这里怎么了?我通过data-test.sql插入了值。我检查了,我可以按存储库获取此行,但为什么相关列表为空
这种情况只适用于测试。当应用程序在相同的数据和模式上运行时,若已填充,则显示相关列表
public interface MainTableRepository extends JpaRepository<MainTable, Long> {}
@DataJpaTest
@ActiveProfiles("test")
public class MainTableDataTest {
@Autowired
private MainTableRepository repository;
@Test
public void testMethod() {
MainTable item = repository.findById(1L).get();
assertEquals(item.getField().size(), 1);
}
}