Tôi muốn sử dụng Hibernate current_timestamp()
để viết dấu thời gian dựa trên thời gian cơ sở dữ liệu vào cột. Tôi muốn sử dụng thời gian cơ sở dữ liệu, không phải thời gian hệ thống của hệ thống dịch vụ của tôi sử dụng cơ sở dữ liệu. Tôi đang sử dụng thời gian cơ sở dữ liệu cho hai truy vấn, Khóa và Mở khóa.Tính thời gian với JPA hoặc truy vấn gốc
Khóa truy vấn
UPDATE MyEntity e SET e.lock = current_timestamp() WHERE e.id = :id
truy vấn Mở khóa
UPDATE MyEntity e SET e.lock = (current_timestamp() - "30 seconds") WHERE e.id = :id
phương sách cuối cùng của tôi là sử dụng một truy vấn bản địa cho PostgreSQL như thế này:
SELECT CURRENT_TIMESTAMP < (CURRENT_TIMESTAMP + INTERVAL '30 second')
Tôi không thể tìm tài liệu về cách thêm/bớt thời gian, nếu nó thậm chí còn được hỗ trợ. Làm cách nào để tôi có thể tạo truy vấn Mở khóa?
Afaik không có hỗ trợ nào cho nó ... jpa 2.1 giới thiệu FUNC ('functionName', args) để gọi một hàm db cụ thể, nhưng nó vẫn rõ ràng là phụ thuộc vào db – Zeromus
Chỉ cần lưu ý: bạn nên đặt cả dịch vụ và db để sử dụng Utc và tiết kiệm cho mình rất nhiều đau đầu – Zeromus
Cảm ơn bạn. Chúng tôi đang sử dụng UTC ở khắp mọi nơi nhưng tôi vẫn lo lắng về các trường hợp khác nhau trên các đồng hồ khác nhau. – span