@Entity
@Table(name = "some_class")
@SequenceGenerator(name = "default_gen", sequenceName = "some_class_id_seq", allocationSize = 1)
data class SomeClass(
@OneToMany(mappedBy = "someClass", cascade = [CascadeType.ALL], orphanRemoval = true)
@OrderBy("date")
var items: List<SomeItem>,
) : AbstractEntity()
@Entity
@Table(name = "some_item")
@SequenceGenerator(name = "default_gen", sequenceName = "some_item_id_seq", allocationSize = 1)
data class SomeItem(
val date: LocalDate,
@ManyToOne
@JsonIgnore
val someClass: SomeClass
) : AbstractEntity()
AbstractEntity
包含一些琐碎的东西,如id、createdAt等。
编辑:这个问题有点像“JPA:cannotmakeorderbywork”。对那个问题的回答给了我正确的方向。
要使测试通过,我需要在访问存储库之前调用以下函数:
private fun clearEntityManagerCache() {
entityManager.flush()
entityManager.clear()
entityManager.entityManagerFactory.cache.evictAll()
}
之后
entityManager
@Inject
private lateinit var entityManager: EntityManager