Có vẻ như ít nhất trong thời điểm hiện tại, việc đặt search_path là điều gì đó nằm ngoài phạm vi đối với jOOQ. Về lý thuyết, chúng ta có thể sử dụng các di chuyển Java trong Flyway và buộc tất cả các tham chiếu trong một hàm phải có các lược đồ rõ ràng, nhưng điều đó nghe có vẻ khá khó khăn. Điều này khiến chúng tôi phải đặt đường dẫn tìm kiếm theo cách thủ công, có khả năng thêm đường dẫn đó vào quản lý giao dịch của chúng tôi hoặc viết một Trình cung cấp kết nối thông minh hơn.
Chúng tôi có một mô hình một truy vấn cho mỗi giao dịch khá nghiêm ngặt trên ứng dụng của mình, vì vậy thực sự không có bất kỳ quản lý giao dịch nào để thêm truy vấn "set search_path =..." vào. Giải pháp ConnectionProvider dường như là lựa chọn tốt nhất của chúng tôi.
Chúng tôi đã có một triển khai ConnectionProvider tùy chỉnh để tổng hợp kết nối, vì vậy không quá phức tạp khi thêm logic (được đưa ra ở trên ở cuối câu hỏi) để đặt search_path. Chúng tôi có thể làm cho nó hoạt động hiệu quả hơn bằng cách trang trí Kết nối với một cái gì đó ghi nhớ những gì mà search_path hiện tại của nó được đặt thành và đặt tiền tố là "set search_path =...;" ở phía trước của bất kỳ tuyên bố nào trước khi nó được đưa ra khỏi cửa nếu cần. Chúng tôi đã nhận thấy tác động đến hiệu suất đối với việc đặt search_path cho mọi yêu cầu, vì vậy chỉ là vấn đề thời gian trước khi điều này trở thành điều cần thiết. Chà, đó là hoặc quay trở lại nỗi đau của lớp truy cập cơ sở dữ liệu độc quyền cũ của chúng tôi.
Ít nhất, tôi sẽ không chấp nhận đây là câu trả lời cho đến khi tôi viết và mở nguồn kết nối pooling / search_path thiết lập ConnectionProvider, với hy vọng rằng ai đó sẽ đưa ra giải pháp tốt hơn trước khi tôi tiếp cận nó.