【发布时间】:2020-07-30 03:59:14
【问题描述】:
帮帮我。
为什么交易后实体中的集合会发生变化?
我的实体:
@Entity
class Entity(
@Id
val uuid: UUID,
@OneToMany(cascade = [CascadeType.PERSIST, CascadeType.REMOVE])
@JoinTable(
name = "entities_items",
joinColumns = [JoinColumn(name = "entity_uuid")],
inverseJoinColumns = [JoinColumn(name = "item_uuid")]
)
val items: MutableList<Item>
)
我的测试:
@SpringBootTest
internal class EntityTest {
@Autowired
lateinit var entityRepository: EntityRepository
@Autowired
lateinit var transactionManager: PlatformTransactionManager
@Test
fun will_added_item() {
val entityBefore = entityRepository.findById(entityId).get()
// entityBefore.items.size == 0
TransactionTemplate(transactionManager).execute { _ ->
val entity = entityRepository.findById(entityId).get()
entity.items.add(item)
}
// entityBefore.items.size == 1 <-- ???
val entityAfter = entityRepository.findById(entityId).get()
}
}
有趣的是,如果我在事务之前添加任何对集合的调用,一切都会好起来的。
Spring Boot + Hibernate + JUnit
【问题讨论】:
-
javatpoint.com/kotlin-mutablelist-mutablelistof 您在列表中添加项目;请检查文档
-
是的,但这些是不同的集合。或者我不明白的东西......
-
不同的参考文献*
标签: spring jpa testing kotlin entitymanager