当前位置: 首页>>代码示例>>Java>>正文


Java Specification类代码示例

本文整理汇总了Java中org.springframework.data.jpa.domain.Specification的典型用法代码示例。如果您正苦于以下问题:Java Specification类的具体用法?Java Specification怎么用?Java Specification使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


Specification类属于org.springframework.data.jpa.domain包,在下文中一共展示了Specification类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: filterByKeywordAndStatus

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
public static Specification<Post> filterByKeywordAndStatus(
    final String keyword,//
    final Post.Status status) {
    return (Root<Post> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {
        List<Predicate> predicates = new ArrayList<>();
        if (StringUtils.hasText(keyword)) {
            predicates.add(
                cb.or(
                    cb.like(root.get(Post_.title), "%" + keyword + "%"),
                    cb.like(root.get(Post_.content), "%" + keyword + "%")
                )
            );
        }

        if (status != null) {
            predicates.add(cb.equal(root.get(Post_.status), status));
        }

        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    };
}
 
开发者ID:hantsy,项目名称:spring-microservice-sample,代码行数:22,代码来源:PostSpecifications.java

示例2: applySpecificationToQueryCriteria

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
/**
 * Spec op query doen.
 * @param spec spec
 * @param query query
 * @param <S> query type
 * @return root
 */
protected final <S> Root<T> applySpecificationToQueryCriteria(final Specification<T> spec, final CriteriaQuery<S> query) {

    Assert.notNull(query, "Query mag niet null zijn.");
    final Root<T> root = query.from(getDomainClass());

    if (spec == null) {
        return root;
    }

    final CriteriaBuilder builder = em.getCriteriaBuilder();
    final Predicate predicate = spec.toPredicate(root, query, builder);

    if (predicate != null) {
        query.where(predicate);
    }

    return root;
}
 
开发者ID:MinBZK,项目名称:OperatieBRP,代码行数:26,代码来源:CustomSimpleJpaRepository.java

示例3: findSentMessagesForUser

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
/**
 * Get a specification using the specified parameters.
 *
 * @param user The sender's user
 * @param subject The subject of the message
 * @param text The text of the message
 * @return The specification
 */
public static Specification<MessageEntity> findSentMessagesForUser(
        final UserEntity user,
        @Nullable final String subject,
        @Nullable final String text
) {
    return (final Root<MessageEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> {
        final List<Predicate> predicates = new ArrayList<>();

        predicates.add(cb.equal(root.get(MessageEntity_.sender), user));

        if (Optional.ofNullable(subject).isPresent()) {
            predicates.add(cb.like(root.get(MessageEntity_.subject), "%" + subject + "%"));
        }
        if (Optional.ofNullable(text).isPresent()) {
            predicates.add(cb.like(root.get(MessageEntity_.text), "%" + text + "%"));
        }

        predicates.add(cb.isTrue(root.get(MessageEntity_.isVisibleForSender)));

        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    };
}
 
开发者ID:JonkiPro,项目名称:REST-Web-Services,代码行数:31,代码来源:MessageSpecs.java

示例4: findReceivedMessagesForUser

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
/**
 * Get a specification using the specified parameters.
 *
 * @param user The recipient's user
 * @param subject The subject of the message
 * @param text The text of the message
 * @return The specification
 */
public static Specification<MessageEntity> findReceivedMessagesForUser(
        final UserEntity user,
        @Nullable final String subject,
        @Nullable final String text
) {
    return (final Root<MessageEntity> root, final CriteriaQuery<?> cq, final CriteriaBuilder cb) -> {
        final List<Predicate> predicates = new ArrayList<>();

        predicates.add(cb.equal(root.get(MessageEntity_.recipient), user));

        if (Optional.ofNullable(subject).isPresent()) {
            predicates.add(cb.like(root.get(MessageEntity_.subject), "%" + subject + "%"));
        }
        if (Optional.ofNullable(text).isPresent()) {
            predicates.add(cb.like(root.get(MessageEntity_.text), "%" + text + "%"));
        }

        predicates.add(cb.isTrue(root.get(MessageEntity_.isVisibleForRecipient)));

        return cb.and(predicates.toArray(new Predicate[predicates.size()]));
    };
}
 
开发者ID:JonkiPro,项目名称:REST-Web-Services,代码行数:31,代码来源:MessageSpecs.java

示例5: aggregate

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
private <S> S aggregate(CriteriaBuilder builder, CriteriaQuery<S> query, Root<E> root, Specification<E> spec, List<Selection<?>> selectionList, LockModeType lockMode) {
	if (selectionList != null) {
		Predicate predicate = spec.toPredicate(root, query, builder);
		if (predicate != null) {
			query.where(predicate);
		}
		query.multiselect(selectionList);
		return (S) em.createQuery(query).setLockMode(lockMode).getSingleResult();
	}
	return null;
}
 
开发者ID:onsoul,项目名称:os,代码行数:12,代码来源:GenericRepositoryImpl.java

示例6: getEntityFieldsSpec

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
private Specification<EventEntity> getEntityFieldsSpec(UUID tenantId, EntityId entityId, String eventType) {
    return new Specification<EventEntity>() {
        @Override
        public Predicate toPredicate(Root<EventEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
            List<Predicate> predicates = new ArrayList<Predicate>();
            if (tenantId != null) {
                Predicate tenantIdPredicate = criteriaBuilder.equal(root.get("tenantId"), UUIDConverter.fromTimeUUID(tenantId));
                predicates.add(tenantIdPredicate);
            }
            if (entityId != null) {
                Predicate entityTypePredicate = criteriaBuilder.equal(root.get("entityType"), entityId.getEntityType());
                predicates.add(entityTypePredicate);
                Predicate entityIdPredicate = criteriaBuilder.equal(root.get("entityId"), UUIDConverter.fromTimeUUID(entityId.getId()));
                predicates.add(entityIdPredicate);
            }
            if (eventType != null) {
                Predicate eventTypePredicate = criteriaBuilder.equal(root.get("eventType"), eventType);
                predicates.add(eventTypePredicate);
            }
            return criteriaBuilder.and(predicates.toArray(new Predicate[]{}));
        }
    };
}
 
开发者ID:osswangxining,项目名称:iotplatform,代码行数:24,代码来源:JpaBaseEventDao.java

示例7: specificationToWork

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
private QueryPlanWork specificationToWork(Specification<T> spec, Pageable pageable) {
    // Unwrap to Hibernate
    final QueryImpl query = getQuery(spec, pageable).unwrap(QueryImpl.class);
    final String hql = query.getQueryString();

    // Create translator
    final QueryTranslator queryTranslator =
            new ASTQueryTranslatorFactory().createQueryTranslator("", hql, Collections.emptyMap(), em.unwrap(SessionImplementor.class).getFactory(), null);
    queryTranslator.compile(Collections.emptyMap(), false);

    // Get translated query and parameters
    final String sql = queryTranslator.getSQLString();
    final Object[] parameters = translateParameters(query, queryTranslator);

    // Done
    return new QueryPlanWork(sql, parameters);
}
 
开发者ID:MinBZK,项目名称:OperatieBRP,代码行数:18,代码来源:CustomSimpleQuerycostJpaRepository.java

示例8: getReplyByPage

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Override
public Page<Reply> getReplyByPage(Integer postsId, int pageNo, int length) {
    Sort.Order order = new Sort.Order(Sort.Direction.ASC, "id");
    Sort sort = new Sort(order);
    PageRequest pageable = new PageRequest(pageNo, length, sort);

    Specification<Reply> specification = new Specification<Reply>() {

        @Override
        public Predicate toPredicate(Root<Reply> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
            Path<Integer> $posts = root.get("posts");
            Predicate predicate = criteriaBuilder.and(criteriaBuilder.equal($posts, postsId));
            return predicate;
        }
    };
    Page<Reply> page = repository.findAll(specification, pageable);
    return page;
}
 
开发者ID:ChinaLHR,项目名称:JavaQuarkBBS,代码行数:19,代码来源:ReplyServiceImpl.java

示例9: findByPage

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Override
public Page<Reply> findByPage(Reply reply, int pageNo, int length) {
    PageRequest pageable = new PageRequest(pageNo, length);

    Specification<Posts> specification = new Specification<Posts>(){

        @Override
        public Predicate toPredicate(Root<Posts> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
            Path<Integer> $id = root.get("id");
            Path<String> $content = root.get("content");
            Path<User> $user = root.get("user");

            ArrayList<Predicate> list = new ArrayList<>();
            if (reply.getId()!=null) list.add(criteriaBuilder.equal($id,reply.getId()));
            if (reply.getContent()!=null) list.add(criteriaBuilder.like($content,"%" + reply.getContent() + "%"));
            if (reply.getUser()!=null) list.add(criteriaBuilder.equal($user,reply.getUser()));

            Predicate predicate = criteriaBuilder.and(list.toArray(new Predicate[list.size()]));

            return predicate;
        }
    };
    Page<Reply> page = repository.findAll(specification, pageable);
    return page;
}
 
开发者ID:ChinaLHR,项目名称:JavaQuarkBBS,代码行数:26,代码来源:ReplyServiceImpl.java

示例10: accountExpiresBefore

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
/**
 * All customers with an {@link Account} expiring before the given date.
 * 
 * @param date
 * @return
 */
public static Specification<Customer> accountExpiresBefore(final LocalDate date) {

	return new Specification<Customer>() {

		@Override
		public Predicate toPredicate(Root<Customer> root, CriteriaQuery<?> query, CriteriaBuilder cb) {

			Root<Account> accounts = query.from(Account.class);
			Path<Date> expiryDate = accounts.<Date> get("expiryDate");
			Predicate customerIsAccountOwner = cb.equal(accounts.<Customer> get("customer"), root);
			Predicate accountExpiryDateBefore = cb.lessThan(expiryDate, date.toDateTimeAtStartOfDay().toDate());

			return cb.and(customerIsAccountOwner, accountExpiryDateBefore);
		}
	};
}
 
开发者ID:Just-Fun,项目名称:spring-data-examples,代码行数:23,代码来源:CustomerSpecifications.java

示例11: findAllIsFilteredBySpecificationAsExpected

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Test
public void findAllIsFilteredBySpecificationAsExpected() {
    ConsoleEntity consoleEntity = new ConsoleEntity(2L);
    consoleEntity.setShortName("X1");
    GameEntity gameEntityToFilter = new GameEntity("Xbox Game", consoleEntity);

    entityManager.persist(gameEntityToFilter);

    SearchCriterion searchCriterion =
            new SearchCriterion("console", "shortName", "join", "PS4");
    List<SearchCriterion> searchCriteria = asList(searchCriterion);
    Specification<GameEntity> specification = specificationBuilder.createSpecification(searchCriteria);

    List<GameEntity> actual = repository.findAll(specification);
    assertThat(actual.size()).isEqualTo(1);
}
 
开发者ID:MannanM,项目名称:corporate-game-share,代码行数:17,代码来源:GameRepositoryIntegrationTest.java

示例12: toPredicate

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Override
public Predicate toPredicate(Root<Object> root, CriteriaQuery<?> cq, CriteriaBuilder cb) {
    List<Predicate> predicates = new ArrayList<>();
    for(Specification specification: specifications){
        Predicate p = specification.toPredicate(root, cq, cb);
        if(p!=null)
            predicates.add(p);
    }
    return cb.and(predicates.toArray(new Predicate[predicates.size()]));
}
 
开发者ID:ZhongjunTian,项目名称:spring-repository-plus,代码行数:11,代码来源:SpecificationImpl.java

示例13: findOne

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Override
public E findOne(Specification<E> spec, LockModeType lockMode) {
	try {
		return getQuery(spec, (Sort) null).setLockMode(lockMode).getSingleResult();
	} catch (NoResultException e) {
		return null;
	}
}
 
开发者ID:onsoul,项目名称:os,代码行数:9,代码来源:GenericRepositoryImpl.java

示例14: findOne

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
/**
 * Find one with fetched associations.
 */
private T findOne(final K id, final Map<String, JoinType> fetchedAssociations) {
	final CriteriaBuilder builder = em.getCriteriaBuilder();
	final CriteriaQuery<T> query = builder.createQuery(getDomainClass());

	// Apply fetch
	final Root<T> root = query.from(getDomainClass());
	SpringUtils.getBean(FetchHelper.class).applyFetchedAssociations(fetchedAssociations, root);

	// Apply specification
	final Specification<T> specification = (r, q, cb) -> cb.equal(r.get("id"), id);
	query.where(specification.toPredicate(root, query, builder));
	query.select(root);
	return em.createQuery(query).getSingleResult();
}
 
开发者ID:ligoj,项目名称:bootstrap,代码行数:18,代码来源:RestRepositoryImpl.java

示例15: sum

import org.springframework.data.jpa.domain.Specification; //导入依赖的package包/类
@Override
public <S> S sum(Class<S> resultClass, Specification<E> spec, LockModeType lockMode, List<SingularAttribute<E, ? extends Number>> properties) {
	CriteriaBuilder builder = em.getCriteriaBuilder();
	CriteriaQuery<S> query = builder.createQuery(resultClass);
	Root<E> root = query.from(getDomainClass());
	List<Selection<?>> selectionList = Lists.newArrayList();
	for (SingularAttribute<E, ? extends Number> property : properties) {
		selectionList.add(builder.sum(root.get(property)));
	}
	return aggregate(builder, query, root, spec, selectionList, lockMode);
}
 
开发者ID:onsoul,项目名称:os,代码行数:12,代码来源:GenericRepositoryImpl.java


注:本文中的org.springframework.data.jpa.domain.Specification类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。