2012-01-18 23 views
6

Tôi đang sử dụng Hibernate trong vài năm nhưng không chắc chắn về việc sử dụng Truy vấn và Tiêu chí.Hibernate và cách tránh thay đổi tên của các phương thức

Tôi hiểu rằng một trong những điểm mạnh của Hibernate là kiểm soát tên trường ở một nơi. Nếu tôi có mã sau:

List cats = sess.createCriteria(Cat.class) 
.add(Restrictions.like("name", "Fritz%")) 
.add(Restrictions.between("weight", minWeight, maxWeight)) 
.list(); 

Nếu tôi thay đổi "tên" của mèo trong đối tượng java thì sao?

Ngay cả khi sử dụng thay thế cấu trúc lại (như trong hình elip), nó sẽ không phát hiện ra phần tử là yếu tố cần thay đổi!

Nếu vậy, làm thế nào để bạn duy trì tên trường trong Java?

+1

Bài kiểm tra đơn vị.Tôi không thể nghĩ ra bất kỳ cơ chế nào khác. – Adi

Trả lời

3

Tôi cho rằng nhập các truy vấn an toàn không được hỗ trợ trong api cụ thể của Hibernate. JPA 2 tuy nhiên đã hỗ trợ cho nó. Đọc bài này: Dynamic, typesafe queries in JPA 2.0

+0

Vì vậy, nó có nghĩa là tôi không thể sử dụng nó với thực hiện hibernate hiện tại của tôi? – Dejell

+0

@Odelya có tùy chọn của bạn là di chuyển sang JPA 2 –

+0

Không thể ngủ đông được sử dụng làm triển khai JPA? – Dejell

0

Tôi đã có cùng một vấn đề trong quá khứ, và thực sự không có cách nào để có một tham chiếu có thể nhập và refactor (thay đổi tên) của một trường trong java, vì vậy không thể có trình tạo truy vấn cho phép điều này, nhưng tôi đã cố gắng xây dựng một trình tạo truy vấn sử dụng một số cách giải quyết để cho phép bạn viết kiểu truy vấn an toàn và refactor, tên của nó là ObjectQuery và bạn có thể tìm thấy một số thông tin về here.

cho tôi biết nếu nó giải quyết trường hợp sử dụng của bạn!

rõ ràng là không có gì tiêu chuẩn vì vậy nếu bạn đang tìm kiếm một cái gì đó của tiêu chuẩn, là tốt hơn JPA Typesafe nhưng nó không có sức mạnh tương tự!

Các vấn đề liên quan