Giả sử, các đối tượng thuộc loại A được lưu trữ trong DB. Dưới đây là cách tôi tải một cụ thể từ DB sử dụng Hibernate:Hibernate: kiểm tra xem đối tượng có tồn tại hay không
org.hibernate.Session session = ...;
long id = 1;
A obj = session.load(A.class, id);
Nếu đối tượng với id = 1 không tồn tại Tôi sẽ nhận được ObjectNotFoundException. Nhưng có cách nào để kiểm tra xem đối tượng đó tồn tại mà không cần phải nắm bắt ngoại lệ? Những gì tôi muốn làm là smth như:
org.hibernate.Session session = ...;
long id = 1;
boolean exists = session.exists(A.class, id);
if(exists){
// do smth.....
}
Không thể tìm thấy nó ngủ đông docs ...
Hmm ... Tôi vẫn nhận được điều tương tự (ObjectNotFoundException) bất kể tôi sử dụng "tải" hoặc "nhận". –
Có thể bạn đang nhận được một ngoại lệ từ một phiên trước đó()? Từ tài liệu cho ObjectNotFoundException: "Ngoại lệ này có thể không được ném khi load() được gọi vì load() trả về proxy nếu có thể. Sử dụng Session.get() để kiểm tra xem một hàng có tồn tại trong db hay không." – Juanma
có được công trình nhưng đó là một cách tiếp cận chậm kể từ Hibernate sẽ phải lấy tất cả các cột và ảnh hưởng đến chúng đến đối tượng mới và lưu trữ nó trong phiên. Nếu bạn không muốn lãng phí tài nguyên vô ích, hãy xem xét cách tiếp cận HQL thay thế. –