Truy vấn của bạn là JPQL hợp lệ và không sử dụng chức năng cụ thể của Hibernate (chỉ khoảng cách giữa thanh và từ bị thiếu). Trong JPA 2.0 đặc điểm kỹ thuật (4.4.5 tham gia) này được giải thích với những lời sau đây:
một bên tham gia có thể được ngầm định bởi việc sử dụng một sản phẩm Descartes trong mệnh đề FROM và một điều kiện tham gia trong mệnh đề WHERE . Trong trường hợp không có điều kiện kết nối, điều này sẽ giảm xuống sản phẩm cartesian.
Trường hợp sử dụng chính cho kiểu kết hợp chung này là khi điều kiện kết nối không liên quan đến mối quan hệ khóa ngoài là được ánh xạ tới mối quan hệ thực thể. Ví dụ: SELECT c TỪ khách hàng c,
Employee e ĐÂU c.hatsize = e.shoesize
khác biệt chính để truy vấn của bạn là chọn của bạn có chứa hai loại thực thể. Kết quả truy vấn là Danh sách đối tượng []. Thứ tự của các phần tử trong mảng giống như trong câu lệnh chọn . Các công trình sau đây trong trường hợp của bạn:
String query =
"select foo, bar from FooEntity as foo, BarEntity as bar "+
"where foo.someothercol = 'foo' and foo.somecol = bar.somecol";
List<Object[]> results = em.createQuery(query).getResultList();
for (Object[] fooAndBar: results) {
FooEntity foo = (FooEntity) fooAndBar[0];
BarEntity bar = (BarEntity) fooAndBar[1];
//do something with foo and bar
}
Nguồn
2012-03-28 17:10:09
khoảng cách bị thiếu giữa thanh và từ bị chấm dứt! –