我有一个OfferRepository extends JpaRepository<OfferEntity, Long>
,它一度必须保存两个实体:
@Transactional
public OfferDto save(OfferDto offerDto) {
// ..
OfferEntity oneOfferEntity = new OfferEntity();
// Copy data ..
oneOfferEntity = this.offerRepository.save(oneOfferEntity);
// Further down ..
OfferEntity anotherOfferEntity = new OfferEntity();
// Copy data ..
anotherOfferEntity = this.offerRepository.save(anotherOfferEntity);
return OfferDto.fromEntity(anotherOfferEntity);
}
我的问题是,似乎只有第二个实体被存储了。第一个似乎被忽略了-除非我注释掉第二个保存操作。
我从未遇到过这种情况-不可能这样做吗?如何确保两个不同的实体保存在这里?
答案 0 :(得分:0)
当然可以,但是问题在于,实体被视为same
。因此,只有第二个被保存,您可以尝试执行以下操作:
OfferEntity oneOfferEntity = new OfferEntity();
oneOfferEntity.setProperty1("1");
OfferEntity anotherOfferEntity = new OfferEntity();
anotherOfferEntity.setProperty1("2");
Property1
是实体中的某些属性。
更多详细信息:JPA
或Hibernate
使用hashCode()
和equals()
来确定实体是否相同(在您的情况下,两个实体被视为相同)。