Chúng tôi sử dụng loại ngày Hibernate tùy chỉnh. Bất cứ khi nào chúng ta thiết lập một tham số trên một truy vấn, chúng ta sử dụng một lớp cơ sở hoặc phương thức tiện ích để chúng ta có thể chuyển múi giờ của người dùng thành tham số kiểu tùy chỉnh.
Bạn có thể nhận bằng cách điều chỉnh thủ công thời gian trong phương thức tiện ích cho truy vấn, nhưng cách ngày này được đọc hoặc ghi vào cơ sở dữ liệu cũng được chuyển đổi chính xác. Phương thức này cũng xử lý tình huống mà cơ sở dữ liệu lưu trữ ngày theo múi giờ địa phương của nó. Vì vậy, ngay cả khi bạn có người dùng trong một múi giờ, một máy chủ cơ sở dữ liệu ở một múi giờ khác và Java bằng cách sử dụng GMT, nó có thể nhận được mọi thứ ngay lập tức. Nó kết thúc lên trông giống như:
Properties properties = new Properties();
properties.setProperty("timeZone", databaseTimeZone);
query.setParameter("from", dateEnteredByUser, Hibernate.custom(LocalizedDateType.class, properties));
Như một phần thưởng thêm, chúng tôi sử dụng điều này để đối phó với thực tế là SQL Server chuyển đổi 23: 59: 59.999 sang ngày hôm sau. Trong loại tùy chỉnh, chúng tôi kiểm tra và tắt nó đi.
Nguồn
2008-11-15 01:42:04
Điều này chỉ là một chút tôi. Nó không giúp điều đó trong Oracle 'DATE' là ngày và giờ khớp với' Date' của Java trong khi 'TIMESTAMP' là một ngày và thời gian với micro giây. –
Bây giờ, phương thức setTimestamp (String, Date) từ loại truy vấn không được chấp nhận –
Maske
Bạn đã lưu ngày của tôi, cảm ơn trước. – VAdaihiep