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

एकाधिक तालिकाओं में शामिल होने के लिए मानदंडबिल्डर को हाइबरनेट करें

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery query = cb.createQuery(/* Your combined target type, e.g. MyQueriedBuildDetails.class, containing buildNumber, duration, code health, etc.*/);

Root<BuildDetails> buildDetailsTable = query.from(BuildDetails.class);
Join<BuildDetails, CopyQualityDetails> qualityJoin = buildDetailsTable.join(CopyQualityDetails_.build, JoinType.INNER);
Join<BuildDetails, DeploymentDetails> deploymentJoin = buildDetailsTable.join(DeploymentDetails_.build, JoinType.INNER);
Join<BuildDetails, TestDetails> testJoin = buildDetailsTable.join(TestDetails_.build, JoinType.INNER);

List<Predicate> predicates = new ArrayList<>();
predicates.add(cb.equal(buildDetailsTable.get(BuildDetails_.buildNumber), "1.0.0.1"));
predicates.add(cb.equal(buildDetailsTable.get(BuildDetails_.projectName), "Tera"));

query.multiselect(buildDetails.get(BuildDetails_.buildNumber),
                  buildDetails.get(BuildDetails_.buildDuration),
                  qualityJoin.get(CodeQualityDetails_.codeHealth),
                  deploymentJoin.get(DeploymentDetails_.deployedEnv),
                  testJoin.get(TestDetails_.testStatus));
query.where(predicates.stream().toArray(Predicate[]::new));

TypedQuery<MyQueriedBuildDetails> typedQuery = entityManager.createQuery(query);

List<MyQueriedBuildDetails> resultList = typedQuery.getResultList();

मुझे लगता है कि आपने अपनी कक्षाओं के लिए जेपीए मेटामोडेल बनाया है। यदि आपके पास मेटामॉडल नहीं है या आप इसका उपयोग नहीं करना चाहते हैं, तो बस BuildDetails_.buildNumber को बदलें और बाकी कॉलम के वास्तविक नामों के साथ String . के रूप में , जैसे "buildNumber"

ध्यान दें कि मैं उत्तर का परीक्षण नहीं कर सका (इसे संपादक समर्थन के बिना भी लिख रहा था), लेकिन इसमें कम से कम वह सब कुछ होना चाहिए जो आपको क्वेरी बनाने के लिए जानना चाहिए।

अपना मेटामॉडल कैसे बनाएं? हाइबरनेट टूलिंग पर एक नज़र डालें उसके लिए (या JPA 2.0 मेटामॉडल कैसे जनरेट करें, इसकी सलाह लें। ? अन्य विकल्पों के लिए)। यदि आप मेवेन का उपयोग कर रहे हैं तो यह hibernate-jpamodelgen जोड़ने जितना आसान हो सकता है - आपके बिल्ड क्लासपाथ पर निर्भरता। चूंकि मेरे पास अब ऐसी कोई परियोजना उपलब्ध नहीं है, इसलिए मैं निम्नलिखित के बारे में इतना निश्चित नहीं हूं (इसलिए इसे नमक के दाने के साथ लें)। केवल निम्नलिखित को निर्भरता के रूप में जोड़ना पर्याप्त हो सकता है:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate-jpamodelgen</artifactId>
  <version>5.3.7.Final</version>
  <scope>provided</scope> <!-- this might ensure that you do not package it, but that it is otherwise available; untested now, but I think I used it that way in the past -->
</dependency>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android से php MySQL पर ArrayList भेजें

  2. LINQ या अन्य ORM के बिना रिपोजिटरी पैटर्न?

  3. COUNT(*) के आधार पर फ़िल्टर करें?

  4. जब मेरा कॉलम INT(10) है तो मैं 10 अंक क्यों नहीं डाल सकता

  5. MySQL के साथ SQL क्वेरी