【发布时间】:2021-02-23 21:19:13
【问题描述】:
我看到 spring 数据的 LastModifiedDate 功能的奇怪行为。
请参考此示例代码:
@Entity
class Store {
@OneToMany(cascade = REFRESH, fetch = EAGER, mappedBy="store")
List<Products> products;
@LastModifiedDate
Instant modificationDate;
}
@Entity
class Product {
@ManyToOne(cascade = REFRESH)
Store store;
@LastModifiedDate
Instant modificationDate;
double price;
boolean available;
}
@Service
class ProductsService {
void reduceMaxProductPrice(UUID storeId, double reduceBy) {
var store = storeRepository.findById(storeId);
var product = store.getProducts().max(p.getPrice()); // Pseudo - get by price
product.setPrice(product.getPrice() - reduceBy);
productRepository.save(product);
// make changes to store - and save
storeRepository.save(store);
}
}
我假设由于我先存储产品然后存储商店,因此商店的最后修改日期将在产品之后。 在实践中,在大多数情况下 (95%+) 这是符合预期的,但我确实看到最后修改的产品是在商店中的产品之后。
我正在尝试了解可能导致此问题的原因?您能否介绍一下 spring(和 hibernate)如何处理这个 LastModifiedDate?
谢谢。
【问题讨论】:
标签: hibernate spring-data-jpa last-modified