Có thể viết truy vấn này như là một typedQuery và để cho hai của Long chạy vào một đối tượng với hai trường công khai dài bên trong.TypedQuery thay vì truy vấn bình thường trong JPA
Query q = em.createQuery(
"SELECT c.id, COUNT(t.id) " +
"FROM PubText t " +
"JOIN t.comm c " +
"WHERE c.element = ?1 " +
"GROUP BY c.id");
q.setParameter(1, e);
List<?> rl = q.getResultList();
Iterator<?> it = rl.iterator();
HashMap<Long, Long> res = new HashMap<Long, Long>();
while (it.hasNext()) {
Object[] n = (Object[]) it.next();
res.put((Long)n[0], (Long)n[1]);
}
return res;
hi @kostja Tôi gặp lỗi (Không thể tạo TypedQuery cho truy vấn có nhiều lần trả lại). SQL của tôi trông như thế này: 'SELECT NEW com.company.ui.EntityIDKey (c.companyId, c.name) FROM Công ty c WHERE c.companyId không phải là null và c.name không phải là null và length (trim (c.name))> 0 thứ tự của c.name asc'. Tôi đang sử dụng một TypedQuery như sau: 'List companies = getEntityManager(). CreateQuery (sql, EntityIDKey.class) .getResultList();' –
điều này có thể là trường hợp nếu EntityIDKey của bạn không phải là một thực thể. Nhà cung cấp miễn phí không hỗ trợ các truy vấn như vậy. Bạn đã thử sử dụng Truy vấn thông thường chưa? – kostja
đúng, 'EntityIDKey' không phải là một thực thể. Tôi đang sử dụng nhà cung cấp Hibernate và bằng cách nào đó giả sử nó sẽ hoạt động. Truy vấn thông thường xây dựng bộ sưu tập 'Công việc' hoạt động tốt. –