0

I want to create a query using CriteriaBuilder. I am using hibernate 3.6.10

Structure of query will be similar to below - How to join Multiple tables using hibernate criteria where entity relationship is not direct?

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(BuildDetails_.buildNumber, "1.0.0.1"));
predicates.add(cb.equal(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);

But as I am not using JPA , I cannot use entityManager. So is there any way to construct CriteriaQuery using Hibernate 3.6.10 ?

I am struggling to create a query like above with Hibernate 3.6.10.

Atul
  • 1,560
  • 5
  • 30
  • 75

1 Answers1

1

With Hibernate 3.6 you cannot use JPA Criteria API.

But Hibernate had his own Criteria Query (which is deprecated in Hibernate 5):

http://docs.jboss.org/hibernate/orm/3.6/reference/en-US/html_single/#querycriteria

Simon Martinelli
  • 34,053
  • 5
  • 48
  • 82