我有一个实体
@Entity
@Builder
@Data
@Table(name = "test_entities")
@NoArgsConstructor
@AllArgsConstructor
public class TestEntity {
@Id
@Column(name = "entity_id")
Long entityId;
@Column(name = "name")
String name;
@Column(name = "description")
String description;
@Column(name = "enttp_enttp_id")
Long entityTypeId;
@Column(name = "start_status_id")
Long entityInitialStatusId;
@Column(name = "final_status_id")
Long entityFinalStatusId;
@Column(name = "is_default")
Boolean isDefault;
@Column(name = "navi_date")
LocalDateTime naviDate;
@Column(name = "navi_user")
String naviUser;
@Column(name = "del_user")
String delUser;
@Column(name = "del_date")
LocalDateTime delDate;
}
我有一个 JPA 存储库
@Transactional
public interface EntityRepository extends JpaRepository<TestEntity, Long> {
void deleteById(Long entityId);
}
我有一些在数据库中创建一些实体的测试。创建实体后,我删除创建的实体
@Slf4j
public class CreateEntityTest extends E2EAbstractTest{
@Autowired
public EntityRepository entityRepository;
@Test
public void createEntity(){
log.info("Send POST /createEntity request ");
//some code
JSONAssert.assertEquals(expectedResponseBody, actualResponseBody, JSONCompareMode.LENIENT);
entityRepository.deleteById(entityId);
}
@Test
public void createEntityGetObject(){
log.info("Send POST /createEntuty request. getObject=true");
//some code
JSONAssert.assertEquals(expectedResponseBody, actualResponseBody, JSONCompareMode.LENIENT);
entityRepository.deleteById(entityId);
}
当我只运行一个测试时,实体会从数据库中完美删除。当我运行整个测试类(连续几次测试)时,实体不会删除。
为什么会这样?我该如何解决这个问题
@Slf4j
@Transactional // Add @Transactional annotation to the test class
public class CreateEntityTest extends E2EAbstractTest {
@Autowired
public EntityRepository entityRepository;
@Test
@Transactional // Add @Transactional annotation to individual test methods
public void createEntity() {
log.info("Send POST /createEntity request ");
// Some code
JSONAssert.assertEquals(expectedResponseBody, actualResponseBody, JSONCompareMode.LENIENT);
entityRepository.deleteById(entityId);
}
@Test
@Transactional // Add @Transactional annotation to individual test methods
public void createEntityGetObject() {
log.info("Send POST /createEntity request. getObject=true");
// Some code
JSONAssert.assertEquals(expectedResponseBody, actualResponseBody, JSONCompareMode.LENIENT);
entityRepository.deleteById(entityId);
}
}