【发布时间】:2021-09-23 08:20:26
【问题描述】:
在本地机器上运行我的集成测试时,一切都按预期进行,但是当我在 IBM Cloud 的管道中运行这些测试时,我遇到了这些异常
2021-07-14 10:36:21.002 调试 1027 --- [测试工人] org.hibernate.SQL : 删除 从 地点 2021-07-14 10:36:21.003 WARN 1027 --- [测试工作者] o.h.engine.jdbc.spi.SqlExceptionHelper:SQL 错误:23503,SQLState: 23503 2021-07-14 10:36:21.003 错误 1027 --- [测试工作者] o.h.engine.jdbc.spi.SqlExceptionHelper:参照完整性 违反约束:“FKLWXQ52YFUYMI2I83EIJ0PU1SI:PUBLIC.RESOURCE FOREIGN KEY(LOCATION_ID) REFERENCES PUBLIC.LOCATION(ID) (1)"; SQL 陈述: 从位置删除 [23503-200]
看起来它不会以某种方式从Location 表中删除数据,然后在删除Resource 表时,它会因违反约束而失败。你有什么想法,为什么会这样?
管道在 Ubuntu 容器 内运行,我正在 MacOS
上进行开发这是在每个测试用例之前运行的数据管理器
@BeforeEach
fun setUp() {
dataManager.cleanDatabase()
}
fun cleanDatabase() {
ingredientRepository.deleteAllInBatch()
articleRepository.deleteAllInBatch()
locationRepository.deleteAllInBatch()
resourceRepository.deleteAllInBatch()
}
这些是实体
@Entity
@Table(name = "resource")
class Resource(
@Column(nullable = false)
val name: String,
@Enumerated(EnumType.STRING)
@Column(nullable = false)
val status: ResourceStatus,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "location_id") // nullable = false
val location: Location,
@ElementCollection
@Column(nullable = false)
@Enumerated(EnumType.STRING)
@CollectionTable(name = "resource_operations", joinColumns = [JoinColumn(name = "resource_id")])
val operations: List<ResourceOperation>
) : AuditableEntity()
@Entity
@Table(name = "location")
class Location(
@Column(nullable = false)
val name: String,
) : AuditableEntity()
(ID 在可审计实体中)
【问题讨论】:
标签: java spring-boot hibernate kotlin jpa