Tôi muốn có một giao diện kho lưu trữ dữ liệu mùa xuân có hai tham số. Có cách nào để làm cho nó có hành vi sau đây không?Dữ liệu mùa xuân - bỏ qua tham số nếu nó có giá trị rỗng
MyObject findByParameterOneAndParameterTwo(String parameterOne, String parameterTwo);
Nếu cả hai tham số đều có giá trị, tôi muốn nó hoạt động bình thường và thực hiện "AND" cho cả hai giá trị.
Nếu ví dụ tham số thứ hai là null, sau đó nó sẽ tìm kiếm chỉ bằng ParameterOne
Bất kỳ lời đề nghị?
Cơ chế truy xuất tên truy vấn kho lưu trữ được cung cấp bởi Spring Data có nghĩa là trường hợp truy vấn được biết trước. Nó không phải là thực tế để mong đợi rằng cơ chế để làm việc với các truy vấn được biết chính xác chỉ khi chạy. Đối với các tình huống động, có một số tùy chọn khác như '@ Query' và QueryDSL. SQL và JPA hỗ trợ hàm 'COALESCE', có thể được sử dụng để làm việc xung quanh tham số đôi khi có giá trị' NULL'. '@Query (" SELECT e TỪ MyObject e WHERE COALESCE (e.parameterOne,? 1) =? 1 AND COALESCE (e.parameterOne,? 2) =? 2 ")' nên hoạt động. – manish
@manish Tôi nghĩ rằng 'COALESCE (? 1, e.parameterOne) = e.parameterOne' là intation của bạn. – Blank
@Forward, tôi đã chỉ đưa ra một hướng để áp phích như tôi không chắc chắn về cách áp phích muốn phù hợp để làm việc chính xác. Ví dụ, nó chưa được xác định cho dù cơ sở dữ liệu có thể chứa các giá trị 'null' cho các cột đó và nếu có, cách thức phù hợp với công việc, v.v. Nhưng có, chỉ dựa trên những gì đã được đăng, bình luận của bạn là tại chỗ trên. – manish