PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menggunakan jpa data pegas untuk menanyakan kolom jsonb?

Saya menemukan sangat membantu Api Spesifikasi dari data pegas.
Katakanlah kita memiliki entitas dengan nama Product dan properti dengan nama title bertipe JSON(B).
Saya berasumsi bahwa properti ini berisi judul Produk dalam bahasa yang berbeda. Contohnya adalah:{"EN":"Multicolor LED light", "EL":"Πολύχρωμο LED φώς"} .
Kode sumber di bawah ini menemukan produk (atau lebih jika bukan bidang unik) berdasarkan judul dan lokal yang diteruskan sebagai argumen.

@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);
//      });
    }
}

Anda dapat menemukan jawaban lain tentang cara menggunakan Data Musim Semi di sini.
Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres Tertanam untuk Tes Boot Musim Semi

  2. Apakah mungkin untuk mendefinisikan variabel global di postgresql

  3. Berhenti (lama) menjalankan kueri SQL di PostgreSQL saat sesi atau permintaan tidak ada lagi?

  4. Bangun wadah buruh pelabuhan postgres dengan skema awal

  5. Menjalankan PostgreSQL Menggunakan Amazon RDS