0 Spring Boot Data JPA thả các cam kết với Postgres 9.5

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Gần đây, ứng dụng của tôi đã thấy các cam kết bị giảm và tôi hoàn toàn bối rối. Không có nhật ký, không có lỗi, mọi thứ vẫn tiếp tục như thể mọi thứ sẽ thành công - nhưng cam kết bị hủy bỏ. Một lớp học bị câm khi xảy ra sự cố như vậy:

@Autowired MyRepository repo;

public Model saveMyModel(){
    final Model model = new Model();
    model.setFoo("something");
    repo.save(model) 

    model.setBar("bar")
    repo.save(model)

    return model; 
}

Hầu hết các cam kết của chúng tôi đều không gặp vấn đề gì với DB, cứ sau 1 (1000 có thể) một lần chúng tôi lại thấy các cam kết bị hủy trong đó bar không được lưu.

Không thành vấn đề nếu chúng tôi đánh dấu điều này là Transactional về hành vi này. Tôi không thấy bất kỳ nhật ký lỗi nào từ DB của chúng tôi và phương pháp này không bao giờ đưa ra bất kỳ lỗi nào và hạ nguồn từ mô hình được trả về từ phương thức tôi có thể truy cập bar mà không gặp sự cố. Chỉ sau cuộc gọi kết quả là Barnull.

Chúng tôi là Spring Boot 2.0 với Postgres 9.5, đây là hành vi tương đối mới trong hơn 3 năm lịch sử của ứng dụng và tôi không thể sao chép bên ngoài môi trường prod của chúng tôi.

Bạn có suy nghĩ gì không? Tôi thà không phải xả mọi thứ vào DB ngay lập tức.

    
1
  1. không chắc bạn dự định là gì, nhưng bạn nên sử dụng merge sau khi bean được lưu để cập nhật. Kiểm tra phần 3.3 baeldung.com/hibernate-save-persist-update-merge -saveorupdate
    2019-05-08 16: 12: 34Z
  2. Dữ liệu mùa xuân nên xử lý việc hợp nhất nếu thực thể đã tồn tại, chúng không có phương thức hợp nhất rõ ràng.
    2019-05-08 16: 22: 15Z
  3. Vâng, bên trong nó cũng làm như vậy. pastebin.com/fANAv9LH có lẽ là một cái gì đó khác.
    2019-05-08 16: 51: 43Z
  4. Bạn có thể mở một vấn đề trong khởi động JPA mùa xuân và liên kết nó StackOverflow. github.com/spring-projects/spring-data-jpa
    2019-05-08 16: 55: 01Z
0 Câu trả lời                              0                         
nguồn đặt đây