Thật không may, đối với truy vấn cụ thể này, không có nhiều cách "tốt hơn" để nhận được giá trị count()
. Những gì bạn có thể làm, để thêm loại an toàn, là thế này:
Field<Integer> f = count();
Integer count = jooq.
.select(f) // Or selectCount(). Replaced it to illustrate the case
.from(USERS)
.fetchOne(f);
Vấn đề là hầu hết các loại thông tin về dự báo đã được "mất" để trình biên dịch Java, bởi thời điểm fetch()
phương pháp này "đạt". Không có cách nào mà phương thức ResultQuery.fetchXXX()
có thể khôi phục nó từ mệnh đề SELECT
và tạo nó cho bạn.
Trên nhóm người dùng jOOQ, một số người dùng đã lập luận để di chuyển phép chiếu sang các phương pháp fetch()
, hoàn toàn, cách LINQ của C# hoặc SLICK của Scala làm điều đó. Điều này sẽ làm phức tạp thêm biểu hiện của các câu lệnh nâng cao hơn SELECT
. An more elaborate explanation is documented here.
Với jOOQ 3.0, các loại an toàn cấp kỷ lục bổ sung đã được giới thiệu. Trong jOOQ 3.3, nó sẽ do đó có thể lấy một giá trị như vậy (đã được đăng ký là #2246):
<T> T fetchValue(Select<Record1<T>> select);
Nguồn
2013-02-19 09:03:33