PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để sử dụng dữ liệu mùa xuân jpa để truy vấn cột jsonb?

Tôi thấy api Đặc điểm kỹ thuật từ dữ liệu mùa xuân rất hữu ích.
Giả sử chúng ta có một thực thể có tên Product và thuộc tính có tên title thuộc loại JSON (B).
Tôi giả sử rằng thuộc tính này chứa tiêu đề của Sản phẩm bằng các ngôn ngữ khác nhau. Ví dụ có thể là:{"EN":"Multicolor LED light", "EL":"Πολύχρωμο LED φώς"} .
Mã nguồn bên dưới tìm một sản phẩm (hoặc nhiều hơn trong trường hợp nó không phải là trường duy nhất) theo tiêu đề và ngôn ngữ được truyền dưới dạng đối số.

@Repository
public interface ProductRepository extends JpaRepository<Product, Integer>, JpaSpecificationExecutor<Product> {
}


public class ProductSpecification implements Specification<Product> {

    private String locale;
    private String titleToSearch;

    public ProductSpecification(String locale, String titleToSearch) {
        this.locale = locale;
        this.titleToSearch = titleToSearch;
    }

    @Override
    public Predicate toPredicate(Root<Product> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
        return builder.equal(builder.function("jsonb_extract_path_text", String.class, root.<String>get("title"), builder.literal(this.locale)), this.titleToSearch);
    }
}


@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> findByTitle(String locale, String titleToSearch) {
        ProductSpecification cs = new ProductSpecification(locale, titleToSearch);
        return productRepository.find(cs);
        // Or using lambda expression - without the need of ProductSpecification class.
//      return productRepository.find((Root<ProductCategory> root, CriteriaQuery<?> query, CriteriaBuilder builder) -> {
//          return builder.equal(builder.function("jsonb_extract_path_text", String.class, root.<String>get("title"), builder.literal(locale)), titleToSearch);
//      });
    }
}

Bạn có thể tìm thấy câu trả lời khác về cách bạn nên sử dụng Dữ liệu mùa xuân tại đây.
Hy vọng điều đó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sau khi khôi phục, chuỗi cơ sở dữ liệu của tôi bị xóa khỏi cột trong Postgresql

  2. org.postgresql.util.PSQLException:Các đối tượng lớn có thể không được sử dụng trong chế độ cam kết tự động

  3. Cách Cot () hoạt động trong PostgreSQL

  4. Câu lệnh sql với đệ quy được diễn giải như thế nào?

  5. Làm cách nào để bạn thay đổi mã hóa ký tự của cơ sở dữ liệu postgres?