Search in sources :

Example 1 with ListJoin

use of jakarta.persistence.criteria.ListJoin in project hibernate-orm by hibernate.

the class AbstractQueryCacheResultTransformerTest method testListElementsProjectionList.

@Test
public void testListElementsProjectionList(SessionFactoryScope scope) throws Exception {
    CriteriaExecutor criteriaExecutor = new CriteriaExecutor() {

        @Override
        protected ResultTransformer getResultTransformer() {
            return null;
        }

        @Override
        protected JpaCriteriaQuery getCriteria(Session s) {
            CriteriaBuilder builder = s.getCriteriaBuilder();
            JpaCriteriaQuery criteria = (JpaCriteriaQuery) builder.createQuery();
            Root<Enrolment> root = criteria.from(Student.class);
            final ListJoin<Object, Object> secretCodes = root.joinList("secretCodes");
            criteria.select(secretCodes);
            return criteria;
        }
    };
    HqlExecutor hqlExecutor = new HqlExecutor() {

        @Override
        public Query getQuery(Session s) {
            return s.createQuery("select elements(s.secretCodes) from Student s");
        }
    };
    ResultChecker checker = results -> {
        List resultList = (List) results;
        assertEquals(3, resultList.size());
        assertTrue(resultList.contains(yogiExpected.getSecretCodes().get(0)));
        assertTrue(resultList.contains(shermanExpected.getSecretCodes().get(0)));
        assertTrue(resultList.contains(shermanExpected.getSecretCodes().get(1)));
    };
    runTest(hqlExecutor, criteriaExecutor, checker, false, scope);
}
Also used : CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) BasicTypeImpl(org.hibernate.type.internal.BasicTypeImpl) ServiceRegistry(org.hibernate.testing.orm.junit.ServiceRegistry) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) JoinType(jakarta.persistence.criteria.JoinType) JpaSelection(org.hibernate.query.criteria.JpaSelection) AvailableSettings(org.hibernate.cfg.AvailableSettings) Assertions.assertNotEquals(org.junit.jupiter.api.Assertions.assertNotEquals) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) Session(org.hibernate.Session) Constructor(java.lang.reflect.Constructor) ArrayList(java.util.ArrayList) HibernateProxy(org.hibernate.proxy.HibernateProxy) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) Map(java.util.Map) Query(org.hibernate.query.Query) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) SessionFactoryImplementor(org.hibernate.engine.spi.SessionFactoryImplementor) Order(jakarta.persistence.criteria.Order) BigIntJdbcType(org.hibernate.type.descriptor.jdbc.BigIntJdbcType) Transformers(org.hibernate.transform.Transformers) Iterator(java.util.Iterator) ListJoin(jakarta.persistence.criteria.ListJoin) ReflectHelper(org.hibernate.internal.util.ReflectHelper) DomainModel(org.hibernate.testing.orm.junit.DomainModel) AliasToBeanConstructorResultTransformer(org.hibernate.transform.AliasToBeanConstructorResultTransformer) Selection(jakarta.persistence.criteria.Selection) CacheMode(org.hibernate.CacheMode) Assertions.assertSame(org.junit.jupiter.api.Assertions.assertSame) JpaCriteriaQuery(org.hibernate.query.criteria.JpaCriteriaQuery) Test(org.junit.jupiter.api.Test) MapJoin(jakarta.persistence.criteria.MapJoin) List(java.util.List) Root(jakarta.persistence.criteria.Root) SessionFactoryScope(org.hibernate.testing.orm.junit.SessionFactoryScope) CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) JpaRoot(org.hibernate.query.criteria.JpaRoot) LongJavaType(org.hibernate.type.descriptor.java.LongJavaType) Setting(org.hibernate.testing.orm.junit.Setting) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) AliasToEntityMapResultTransformer(org.hibernate.transform.AliasToEntityMapResultTransformer) SessionFactory(org.hibernate.testing.orm.junit.SessionFactory) Path(jakarta.persistence.criteria.Path) Hibernate(org.hibernate.Hibernate) ResultTransformer(org.hibernate.transform.ResultTransformer) Type(org.hibernate.type.Type) Join(jakarta.persistence.criteria.Join) ArrayList(java.util.ArrayList) List(java.util.List) JpaCriteriaQuery(org.hibernate.query.criteria.JpaCriteriaQuery) Session(org.hibernate.Session) Test(org.junit.jupiter.api.Test)

Example 2 with ListJoin

use of jakarta.persistence.criteria.ListJoin in project eclipselink by eclipse-ee4j.

the class CriteriaBuilderImpl method treat.

@Override
public <X, T, E extends T> ListJoin<X, E> treat(ListJoin<X, T> join, Class<E> type) {
    ListJoinImpl parentJoin = (ListJoinImpl) join;
    ListJoin joinImpl = null;
    if (join instanceof BasicListJoinImpl) {
        joinImpl = new BasicListJoinImpl<X, E>(parentJoin, this.metamodel, type, parentJoin.currentNode.treat(type), parentJoin.getModel(), parentJoin.getJoinType());
    } else {
        joinImpl = new ListJoinImpl<X, E>((Path) join, this.metamodel.managedType(type), this.metamodel, type, parentJoin.currentNode.treat(type), parentJoin.getModel(), parentJoin.getJoinType());
    }
    parentJoin.joins.add(joinImpl);
    ((FromImpl) joinImpl).isJoin = parentJoin.isJoin;
    parentJoin.isJoin = false;
    return joinImpl;
}
Also used : Path(jakarta.persistence.criteria.Path) ListJoin(jakarta.persistence.criteria.ListJoin)

Example 3 with ListJoin

use of jakarta.persistence.criteria.ListJoin in project hibernate-orm by hibernate.

the class HHH14916Test method testJoinOnFetchNoExceptionThrow.

@Test
public void testJoinOnFetchNoExceptionThrow(EntityManagerFactoryScope scope) {
    scope.inTransaction(entityManager -> {
        final CriteriaBuilder builder = entityManager.getCriteriaBuilder();
        final CriteriaQuery<Author> query = builder.createQuery(Author.class);
        final Root<Author> root = query.from(Author.class);
        final ListJoin<Author, Book> authorBookJoin = (ListJoin) root.fetch("books", JoinType.LEFT);
        final ListJoin<Book, Chapter> bookChapterJoin = authorBookJoin.joinList("chapters", JoinType.LEFT);
        final Predicate finalPredicate = builder.equal(bookChapterJoin.get("name"), "Overview of HTTP");
        query.where(finalPredicate);
        Author author = entityManager.createQuery(query).getSingleResult();
        assertEquals("David Gourley", author.name);
        assertEquals("HTTP Definitive guide", author.books.get(0).name);
        assertEquals("Overview of HTTP", author.books.get(0).chapters.get(0).name);
    });
}
Also used : CriteriaBuilder(jakarta.persistence.criteria.CriteriaBuilder) ListJoin(jakarta.persistence.criteria.ListJoin) Predicate(jakarta.persistence.criteria.Predicate) Test(org.junit.jupiter.api.Test)

Aggregations

ListJoin (jakarta.persistence.criteria.ListJoin)3 CriteriaBuilder (jakarta.persistence.criteria.CriteriaBuilder)2 Path (jakarta.persistence.criteria.Path)2 Join (jakarta.persistence.criteria.Join)1 JoinType (jakarta.persistence.criteria.JoinType)1 MapJoin (jakarta.persistence.criteria.MapJoin)1 Order (jakarta.persistence.criteria.Order)1 Predicate (jakarta.persistence.criteria.Predicate)1 Root (jakarta.persistence.criteria.Root)1 Selection (jakarta.persistence.criteria.Selection)1 Constructor (java.lang.reflect.Constructor)1 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1 List (java.util.List)1 Map (java.util.Map)1 CacheMode (org.hibernate.CacheMode)1 Hibernate (org.hibernate.Hibernate)1 Session (org.hibernate.Session)1 AvailableSettings (org.hibernate.cfg.AvailableSettings)1 SessionFactoryImplementor (org.hibernate.engine.spi.SessionFactoryImplementor)1