2010-10-22 36 views
56

Tôi đã cố gắng tìm hướng dẫn API Tiêu chí JPA nhưng chưa thành công nhiều. Bạn có biết về bất kỳ người mới bắt đầu nào không? Tôi muốn bắt đầu sử dụng nó trong một ứng dụng Java5/Maven để xây dựng các truy vấn tìm kiếm phức tạp.Hướng dẫn Tiêu chuẩn JPA

+1

Tương quan hệ giữa off-topic và == hữu 1,0 – HDave

Trả lời

95

Bài viết Dynamic, typesafe queries in JPA 2.0 là một trong rất tốt về chủ đề này, thực sự là tốt nhất tôi đã tìm thấy cho đến nay trực tuyến, thậm chí tốt hơn so với Chapter 23 Using the Criteria API to Create Queries từ Java EE 6 hướng dẫn (có chứa một số sai lầm).

+2

@HDave EE7 liên kết của Oracle với API Tiêu chuẩn đã thay đổi tới [https://docs.oracle.com/ javaee/7/tutorial/persistence-criteria.htm # GJITV] (https://docs.oracle.com/javaee/7/tutorial/persistence-criteria.htm#GJITV) – skomisa

12

Ví dụ về truy vấn phổ biến là here

Tất cả các ví dụ là theo hình thức này:

CriteriaBuilder cb = em.getCriteriaBuilder(); 

// Query for a List of objects. 
CriteriaQuery cq = cb.createQuery(); 
Root e = cq.from(Employee.class); 
cq.where(cb.greaterThan(e.get("salary"), 100000)); 
Query query = em.createQuery(cq); 
List<Employee> result = query.getResultList(); 

Nếu bạn cũng đang xem xét các công nghệ khác bạn nên xem xét nghiêm túc querydsl. Ưu điểm chính so với tiêu chí bao gồm mã ngắn hơn, khả năng đọc tốt và cú pháp tương tự với sql thông thường.

Ví dụ QueryDSL mã ở đây:

JPAQuery query = new JPAQuery(entityManager); 
List<Person> persons = query.from(person) 
    .where(
    person.firstName.eq("John")),   
    .list(person); 
+0

ví dụ đầu tiên của bạn ném "Không có lựa chọn rõ ràng và một ẩn một người không thể được xác định "exeption – Irakli

+0

' .where ('khung mở ở đây không đóng. – Alex78191

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