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

जेपीए मानदंड एपीआई के साथ पोस्टग्रेएसक्यूएल सरणी कॉलम को कैसे फ़िल्टर करें?

जेपीए 2.0 विनिर्देशों के अनुसार:

हालांकि, मैंने गिटहब पर एक कार्यशील उदाहरण हाइबरनेट का उपयोग करना।

मान लें कि हमारे पास यह CalendarEvent है इकाई और MailingCode डीटीओ ऑब्जेक्ट:

@Entity(name = "CalendarEvent")
@Table
public static class CalendarEvent implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @ElementCollection
    private final List<Integer> mailingCodes = new ArrayList<>();

}

public static class MailingCode {
    private Integer id;

    public MailingCode(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }
}

आप मानदंड API कोड इस प्रकार लिख सकते हैं:

CriteriaBuilder builder = entityManager.getCriteriaBuilder();
CriteriaQuery<CalendarEvent> criteria = builder.createQuery(CalendarEvent.class);
Root<CalendarEvent> root = criteria.from(CalendarEvent.class);

List<MailingCode> mailingCodes = Arrays.asList(
    new MailingCode(1),
    new MailingCode(2),
    new MailingCode(3)
);

Expression<List<Integer>> mailingCodesPath = root.get("mailingCodes");

Predicate predicate = builder.conjunction();

for(MailingCode mailingCode: mailingCodes){
    predicate = builder.and(predicate, builder.isMember(mailingCode.getId(), mailingCodesPath));
}

criteria.where(predicate);
List<CalendarEvent> events = entityManager.createQuery(criteria).getResultList();

हालाँकि, IN क्वेरी एक बेहतर विकल्प है क्योंकि उपरोक्त SQL क्वेरी उप-इष्टतम है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रूबी ऑन रेल्स 5.2 में ActiveRecord माइग्रेशन में तालिका बनाते समय उपयोग करने के लिए अनुक्रम को कैसे परिभाषित करें?

  2. समग्र प्रकार की सरणी के लिए सही वाक्यविन्यास

  3. Jboss-as-7.1.1 को Postgresql से कैसे कनेक्ट करें

  4. एस्केप कैरेक्टर के बिना psql आउटपुट स्ट्रिंग्स को पोस्टग्रेज करता है

  5. मेरे हेरोकू ऐप में पोस्टग्रेस्क्ल जोड़ना - सिंटैक्स क्रैशिंग प्रश्नों के साथ समस्याएं?