PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मैं jsonb कॉलम को क्वेरी करने के लिए स्प्रिंग डेटा जेपीए का उपयोग कैसे करूं?

मुझे स्प्रिंग डेटा से विशिष्टता एपीआई बहुत मददगार लगी।
मान लें कि हमारे पास Product नाम वाली एक इकाई है और title . नाम वाली प्रॉपर्टी प्रकार का JSON(B).
मुझे लगता है कि इस संपत्ति में विभिन्न भाषाओं में उत्पाद का शीर्षक है। एक उदाहरण हो सकता है:{"EN":"Multicolor LED light", "EL":"Πολύχρωμο LED φώς"} .
नीचे दिया गया स्रोत कोड शीर्षक और स्थान के आधार पर तर्क के रूप में पारित एक (या अधिक यदि यह एक अद्वितीय फ़ील्ड नहीं है) उत्पाद ढूंढता है।

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

आपको स्प्रिंग डेटा का उपयोग करने के तरीके के बारे में एक और उत्तर यहां मिल सकता है।
उम्मीद है कि यह मदद करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL का उपयोग करके सभी डेटाबेस को कैसे सूचीबद्ध करें

  2. क्या PostgreSQL में स्ट्रिंग मान (जैसे eval) के अंदर किसी क्वेरी को निष्पादित करने का कोई तरीका है?

  3. PostgreSQL में व्यू कैसे बनाएं

  4. कैसे LocalTimeStamp () PostgreSQL में काम करता है

  5. PostgreSQL + हाइबरनेट + स्प्रिंग ऑटो डेटाबेस बनाएँ