我在Spring Boot存储库中有一个自定义方法,如下所示:
@Transactional
@Modifying
@Query(value = "insert into image ( product_id, image_path) values ( :product_id, :image_path )", nativeQuery = true)
void insertProduct(
@Param("product_id") long product_id , @Param("image_path") String image_path);
我通过insertProduct()
方法执行createProduct
:
@PostMapping(consumes = { "multipart/form-data" }, value = "/createProduct/{category_id}")
@ResponseStatus(HttpStatus.OK)
@ResponseBody
private List<CategoryModel> createProduct(@RequestPart("product") @Valid ProductModel product,
@PathVariable("category_id") int category_id,
@RequestPart("file") @Valid @NotNull MultipartFile file) {
String fileName = fileStorageService.storeFile(file);
product.setCategory_id(category_id);
this.productRepository.save(product);
String workingDir = System.getProperty("user.dir") + "/uploads/";
String imagePath = workingDir + fileName;
int productID = this.productRepository.selectLastRecord();
this.imageRepository.insertProduct(productID, imagePath);
return this.categoryRepository.findAll();
}
我的问题是因为当我使用insertProduct()
将数据存储到DB中时
当我从this.categoryRepository.findAll();
返回数据时
我没有得到新的填充数据,而得到了旧版本数据。我调试了,当我执行insertProduct()
时,我已经在数据库中插入了新数据,但不理解为什么我可以返回。