Search in sources :

Example 1 with QuerydslQueryFactory

use of io.crnk.jpa.query.querydsl.QuerydslQueryFactory in project crnk-framework by crnk-project.

the class DtoMappingTest method setupModule.

@Override
protected void setupModule(JpaModule module, boolean server) {
    super.setupModule(module, server);
    if (server) {
        EntityManager entityManager = module.getEntityManager();
        QuerydslExpressionFactory<QTestEntity> basicComputedValueFactory = new QuerydslExpressionFactory<QTestEntity>() {

            @Override
            public Expression<String> getExpression(QTestEntity parent, JPAQuery<?> jpaQuery) {
                return parent.stringValue.upper();
            }
        };
        QuerydslExpressionFactory<QTestEntity> complexComputedValueFactory = new QuerydslExpressionFactory<QTestEntity>() {

            @Override
            public Expression<Long> getExpression(QTestEntity parent, JPAQuery<?> jpaQuery) {
                QTestEntity root = QTestEntity.testEntity;
                QTestEntity sub = new QTestEntity("subquery");
                return JPAExpressions.select(sub.id.count()).from(sub).where(sub.id.lt(root.id));
            }
        };
        QuerydslQueryFactory queryFactory = (QuerydslQueryFactory) module.getQueryFactory();
        queryFactory.registerComputedAttribute(TestEntity.class, TestDTO.ATTR_COMPUTED_UPPER_STRING_VALUE, String.class, basicComputedValueFactory);
        queryFactory.registerComputedAttribute(TestEntity.class, TestDTO.ATTR_COMPUTED_NUMBER_OF_SMALLER_IDS, Long.class, complexComputedValueFactory);
        module.addRepository(JpaRepositoryConfig.builder(TestEntity.class, TestDTO.class, new TestDTOMapper(entityManager)).build());
        module.addRepository(JpaRepositoryConfig.builder(RelatedEntity.class, RelatedDTO.class, new RelatedDTOMapper(entityManager)).build());
        module.addFilter(new JpaRepositoryFilterBase() {

            @Override
            public <T> JpaQuery<T> filterQuery(Object repository, QuerySpec querySpec, JpaQuery<T> query) {
                query.setDistinct(true);
                return query;
            }
        });
    }
}
Also used : QuerydslQueryFactory(io.crnk.jpa.query.querydsl.QuerydslQueryFactory) JPAQuery(com.querydsl.jpa.impl.JPAQuery) JpaQuery(io.crnk.jpa.query.JpaQuery) QuerydslExpressionFactory(io.crnk.jpa.query.querydsl.QuerydslExpressionFactory) EntityManager(javax.persistence.EntityManager) QTestEntity(io.crnk.jpa.model.QTestEntity) JpaRepositoryFilterBase(io.crnk.jpa.JpaRepositoryFilterBase) QuerySpec(io.crnk.core.queryspec.QuerySpec)

Example 2 with QuerydslQueryFactory

use of io.crnk.jpa.query.querydsl.QuerydslQueryFactory in project crnk-framework by crnk-project.

the class JpaModule method initQueryFactory.

private void initQueryFactory() {
    JpaQueryFactory queryFactory = config.getQueryFactory();
    queryFactory.initalize(new JpaQueryFactoryContext() {

        @Override
        public EntityManager getEntityManager() {
            return em;
        }

        @Override
        public MetaPartition getMetaPartition() {
            return jpaMetaProvider.getPartition();
        }
    });
    if (queryFactory instanceof QuerydslQueryFactory) {
        QuerydslQueryFactory querydslFactory = (QuerydslQueryFactory) queryFactory;
        querydslFactory.addInterceptor(new JpaQuerydslTranslationInterceptor());
    }
}
Also used : QuerydslQueryFactory(io.crnk.jpa.query.querydsl.QuerydslQueryFactory) EntityManager(javax.persistence.EntityManager) JpaQueryFactoryContext(io.crnk.jpa.query.JpaQueryFactoryContext) JpaQueryFactory(io.crnk.jpa.query.JpaQueryFactory) MetaPartition(io.crnk.meta.provider.MetaPartition)

Aggregations

QuerydslQueryFactory (io.crnk.jpa.query.querydsl.QuerydslQueryFactory)2 EntityManager (javax.persistence.EntityManager)2 JPAQuery (com.querydsl.jpa.impl.JPAQuery)1 QuerySpec (io.crnk.core.queryspec.QuerySpec)1 JpaRepositoryFilterBase (io.crnk.jpa.JpaRepositoryFilterBase)1 QTestEntity (io.crnk.jpa.model.QTestEntity)1 JpaQuery (io.crnk.jpa.query.JpaQuery)1 JpaQueryFactory (io.crnk.jpa.query.JpaQueryFactory)1 JpaQueryFactoryContext (io.crnk.jpa.query.JpaQueryFactoryContext)1 QuerydslExpressionFactory (io.crnk.jpa.query.querydsl.QuerydslExpressionFactory)1 MetaPartition (io.crnk.meta.provider.MetaPartition)1