org.springframework.data.repository.history.RevisionRepository
Entity entity = repository.findLastChangeRevision(entity.getId()).get().getEntity();
返回列表为listproxy的实体。
正常积垢
repository.findById(id)
返回具有相同内容的相同实体,但列表类型为persistentbag。
在集成测试中Assert这两个对象的这种不同情况是一个问题。
有什么解决办法吗?
1条答案
按热度按时间yvt65v4c1#
不要测试内容是否相等,而要测试内容是否相等。如何做到这一点取决于您使用的测试和Assert库。
例如,assertj
containsExactlyInAnyOrder
以及containsExactly
为了这个。一些模糊的背景
hibernate,通常所有jpa实现和大多数orms要么替换/操作类的字节码,要么使用代理或特殊实现来完成它们的工作。一个重要的部分是脏跟踪,即jpa会在您更改实体时注意到,例如通过向集合中添加元素。为了做到这一点,他们必须做一些魔术,比如用通知jpa实现此类操作的其他类替换列表。
因此,您可能会在实体示例中找到来自jpa实现的实现。