Spring Hibernet中的findAll()方法在自定义SQL方法之前执行

时间:2019-06-15 16:12:55

标签: sql postgresql hibernate spring-boot jpa

我在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()时,我已经在数据库中插入了新数据,但不理解为什么我可以返回。

0 个答案:

没有答案