javax.persistence.criteria.Root Java Examples

The following examples show how to use javax.persistence.criteria.Root. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ActionValidate.java    From o2oa with GNU Affero General Public License v3.0 8 votes vote down vote up
private Code get(EntityManagerContainer emc, String mobile, String answer) throws Exception {
	EntityManager em = emc.get(Code.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<Code> cq = cb.createQuery(Code.class);
	Root<Code> root = cq.from(Code.class);
	Calendar cal = Calendar.getInstance();
	cal.add(Calendar.MINUTE, -30);
	Predicate p = cb.greaterThan(root.get(Code_.createTime), cal.getTime());
	p = cb.and(p, cb.equal(root.get(Code_.mobile), mobile));
	p = cb.and(p, cb.equal(root.get(Code_.answer), answer));
	List<Code> list = em.createQuery(cq.where(p)).getResultList();
	if (list.isEmpty()) {
		return null;
	} else {
		return list.get(0);
	}
}
 
Example #2
Source File: OkrWorkPersonFactory.java    From o2oa with GNU Affero General Public License v3.0 7 votes vote down vote up
/**
 * 查询工作干系人身份列表(去重复)
 * 
 * @param identities_ok
 *            排除身份
 * @param identities_error
 *            排除身份
 * @return
 * @throws Exception
 */
public List<String> listAllDistinctEmployeeIdentity(List<String> identities_ok, List<String> identities_error)
		throws Exception {
	EntityManager em = this.entityManagerContainer().get(OkrWorkPerson.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);

	Predicate p = cb.isNotNull(root.get(OkrWorkPerson_.id));
	if (identities_ok != null && identities_ok.size() > 0) {
		p = cb.and(p, cb.not(root.get(OkrWorkPerson_.employeeIdentity).in(identities_ok)));
	}
	if (identities_error != null && identities_error.size() > 0) {
		p = cb.and(p, cb.not(root.get(OkrWorkPerson_.employeeIdentity).in(identities_error)));
	}
	cq.distinct(true).select(root.get(OkrWorkPerson_.employeeIdentity));
	return em.createQuery(cq.where(p)).getResultList();
}
 
Example #3
Source File: ActionListNameWithIdentity.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
private Wo list(Business business, Wi wi) throws Exception {
	Wo wo = new Wo();
	List<Identity> os = business.identity().pick(wi.getIdentityList());
	List<String> ids = ListTools.extractProperty(os, JpaObject.id_FIELDNAME, String.class, true, true);
	if (ListTools.isNotEmpty(ids)) {
		EntityManager em = business.entityManagerContainer().get(UnitDuty.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<String> cq = cb.createQuery(String.class);
		Root<UnitDuty> root = cq.from(UnitDuty.class);
		Predicate p = root.get(UnitDuty_.identityList).in(ids);
		List<String> names = em.createQuery(cq.select(root.get(UnitDuty_.name)).where(p).distinct(true))
				.getResultList();
		if (!names.isEmpty()) {
			wo.getNameList().addAll(names);
		}
	}
	return wo;
}
 
Example #4
Source File: ActionListWithPersonLike.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
private List<String> listFromApplication(Business business, EffectivePerson effectivePerson, List<String> roles,
		List<String> identities, List<String> units) throws Exception {
	List<String> list = new ArrayList<>();
	EntityManager em = business.entityManagerContainer().get(Application.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<Application> root = cq.from(Application.class);
	if (effectivePerson.isNotManager() && (!business.organization().person().hasRole(effectivePerson,
			OrganizationDefinition.Manager, OrganizationDefinition.ProcessPlatformManager))) {
		Predicate p = cb.and(cb.isEmpty(root.get(Application_.availableIdentityList)),
				cb.isEmpty(root.get(Application_.availableUnitList)));
		p = cb.or(p, cb.isMember(effectivePerson.getDistinguishedName(), root.get(Application_.controllerList)));
		p = cb.or(p, cb.equal(root.get(Application_.creatorPerson), effectivePerson.getDistinguishedName()));
		if (ListTools.isNotEmpty(identities)) {
			p = cb.or(p, root.get(Application_.availableIdentityList).in(identities));
		}
		if (ListTools.isNotEmpty(units)) {
			p = cb.or(p, root.get(Application_.availableUnitList).in(units));
		}
		cq.where(p);
	}
	list = em.createQuery(cq.select(root.get(Application_.id)).distinct(true)).getResultList();
	return list;
}
 
Example #5
Source File: Calendar_EventFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * 根据重复主体以及日期查询指定的日历记录信息ID列表
 * @param repeatMasterId
 * @param startTime
 * @param endTime
 * @return
 * @throws Exception
 */
public List<String> listWithRepeatMaster( String repeatMasterId, Date startTime, Date endTime ) throws Exception {
	EntityManager em = this.entityManagerContainer().get(Calendar_Event.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<Calendar_Event> root = cq.from(Calendar_Event.class);
	
	Predicate p = null;
	if( StringUtils.isNotEmpty( repeatMasterId )) {
		p = CriteriaBuilderTools.predicate_and( cb, p, cb.equal(root.get(Calendar_Event_.repeatMasterId), repeatMasterId));
	}
	if( startTime != null ) {
		if( endTime == null ) {
			//查询startTime之后的所有记录
			p = CriteriaBuilderTools.predicate_and( cb, p, cb.greaterThanOrEqualTo( root.get(Calendar_Event_.startTime), startTime ));
		}else {
			p = CriteriaBuilderTools.predicate_and( cb, p, cb.lessThanOrEqualTo( root.get(Calendar_Event_.startTime), endTime ));
			p = CriteriaBuilderTools.predicate_and( cb, p, cb.greaterThanOrEqualTo( root.get(Calendar_Event_.endTime), startTime ));
		}
	}
	cq.select(root.get(Calendar_Event_.id));
	return em.createQuery(cq.where(p)).getResultList();
}
 
Example #6
Source File: ActionFilterAttribute.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
private List<NameValueCountPair> listActivityNamePair(Business business, EffectivePerson effectivePerson)
		throws Exception {
	EntityManager em = business.entityManagerContainer().get(TaskCompleted.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<TaskCompleted> root = cq.from(TaskCompleted.class);
	Predicate p = cb.equal(root.get(TaskCompleted_.person), effectivePerson.getDistinguishedName());
	p = cb.and(p,
			cb.or(cb.equal(root.get(TaskCompleted_.latest), true), cb.isNull(root.get(TaskCompleted_.latest))));
	cq.select(root.get(TaskCompleted_.activityName)).where(p).distinct(true);
	List<String> os = em.createQuery(cq).getResultList();
	List<NameValueCountPair> wos = new ArrayList<>();
	for (String str : os) {
		if (StringUtils.isNotEmpty(str)) {
			NameValueCountPair o = new NameValueCountPair();
			o.setValue(str);
			o.setName(str);
			wos.add(o);
		}
	}
	SortTools.asc(wos, "name");
	return wos;
}
 
Example #7
Source File: OkrWorkPersonFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public Long getCompletedWorkCountByCenterId(String identity, List<String> status, String processIdentity)
		throws Exception {
	if (identity == null || identity.isEmpty()) {
		throw new Exception("identity is null.");
	}
	if (status == null || status.isEmpty()) {
		throw new Exception("status is null.");
	}
	EntityManager em = this.entityManagerContainer().get(OkrWorkPerson.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<Long> cq = cb.createQuery(Long.class);
	Root<OkrWorkPerson> root = cq.from(OkrWorkPerson.class);
	Predicate p = root.get(OkrWorkPerson_.status).in(status);
	p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.employeeIdentity), identity));
	p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.workProcessStatus), "已完成"));
	if (processIdentity != null && !processIdentity.isEmpty()) {
		p = cb.and(p, cb.equal(root.get(OkrWorkPerson_.processIdentity), processIdentity));
	}
	// 查询总数
	cq.select(cb.count(root));
	// logger.info( ">>>>getCompletedWorkCountByCenterId-SQL:" +
	// em.createQuery(cq.where(p)).toString() );
	return em.createQuery(cq.where(p)).getSingleResult();
}
 
Example #8
Source File: AppDictItemFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public AppDictItem getWithAppDictWithPath(String appDict, String path0, String path1, String path2, String path3, String path4, String path5,
		String path6, String path7) throws Exception {
	EntityManager em = this.entityManagerContainer().get(AppDictItem.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<AppDictItem> cq = cb.createQuery(AppDictItem.class);
	Root<AppDictItem> root = cq.from(AppDictItem.class);
	Predicate p = cb.equal(root.get(AppDictItem_.bundle), appDict);
	p = cb.and(p, cb.equal(root.get("path0"), path0));
	p = cb.and(p, cb.equal(root.get("path1"), path1));
	p = cb.and(p, cb.equal(root.get("path2"), path2));
	p = cb.and(p, cb.equal(root.get("path3"), path3));
	p = cb.and(p, cb.equal(root.get("path4"), path4));
	p = cb.and(p, cb.equal(root.get("path5"), path5));
	p = cb.and(p, cb.equal(root.get("path6"), path6));
	p = cb.and(p, cb.equal(root.get("path7"), path7));
	cq.select(root).where(p);
	List<AppDictItem> list = em.createQuery(cq).getResultList();
	if (list.size() == 0) {
		return null;
	}
	if (list.size() == 1) {
		return list.get(0);
	}
	throw new Exception("error mulit appDictItem{id:" + appDict + ", path0:" + path0 + ", path1:" + path1 + ", path2:" + path2 + ", path3:" + path3
			+ ", path4:" + path4 + ", path5:" + path5 + ", path6:" + path6 + ", path7:" + path7 + "}");
}
 
Example #9
Source File: TagDaoImpl.java    From herd with Apache License 2.0 6 votes vote down vote up
@Override
public List<TagEntity> getTagsByIds(List<Long> ids)
{
    // Create the criteria builder and a tuple style criteria query.
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<TagEntity> criteria = builder.createQuery(TagEntity.class);

    // The criteria root is the tag entity.
    Root<TagEntity> tagEntityRoot = criteria.from(TagEntity.class);

    // Create the standard restrictions (i.e. the standard where clauses).
    Expression<Long> expression = tagEntityRoot.get(TagEntity_.id);
    Predicate queryRestriction = expression.in(ids);

    criteria.select(tagEntityRoot).where(queryRestriction);

    return entityManager.createQuery(criteria).getResultList();
}
 
Example #10
Source File: ScriptFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public Script flagWithPortalObject(String flag, String portalId) throws Exception {
	String cacheKey = ApplicationCache.concreteCacheKey("flagObject", flag);
	Element element = scriptCache.get(cacheKey);
	if ((null != element) && (null != element.getObjectValue())) {
		return (Script) element.getObjectValue();
	} else {
		EntityManager em = this.entityManagerContainer().get(Script.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<Script> cq = cb.createQuery(Script.class);
		Root<Script> root = cq.from(Script.class);
		Predicate p = cb.equal(root.get(Script_.portal), portalId);
		p = cb.and(p, cb.or(cb.equal(root.get(Script_.name), flag), cb.equal(root.get(Script_.alias), flag)));
		List<Script> list = em.createQuery(cq.select(root).where(p)).setMaxResults(1).getResultList();
		if (list.isEmpty()) {
			return null;
		} else {
			Script o = list.get(0);
			em.detach(o);
			scriptCache.put(new Element(cacheKey, o));
			return o;
		}
	}
}
 
Example #11
Source File: CategoryInfoFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * 查询指定用户,组织,群组可以管理的分类列表
 * @param personName
 * @param unitNames
 * @param groupNames
 * @param inAppInfoIds
 * @return
 * @throws Exception
 */
public List<String> listManageableCategoryIds( String personName, List<String> unitNames, List<String> groupNames, List<String> inAppInfoIds,
		String documentType, Integer maxCount ) throws Exception {
	EntityManager em = this.entityManagerContainer().get(CategoryInfo.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<CategoryInfo> root = cq.from(CategoryInfo.class);
	
	Predicate p = cb.isMember( personName, root.get( CategoryInfo_.manageablePersonList ));
	if( ListTools.isNotEmpty( inAppInfoIds )) {
		p = cb.and( p, root.get( CategoryInfo_.appId ).in( inAppInfoIds ) );
	}
	if( ListTools.isNotEmpty( unitNames )) {
		p = cb.or( p,  root.get( CategoryInfo_.manageableUnitList).in(unitNames));
	}
	if( ListTools.isNotEmpty( groupNames )) {
		p = cb.or( p,  root.get( CategoryInfo_.manageableGroupList).in(groupNames));
	}
	cq.select(root.get( CategoryInfo_.id ));
	if( StringUtils.isNotEmpty( documentType) && !"全部".equals(documentType) && !"all".equalsIgnoreCase(documentType)) {
		p = cb.and( p, cb.equal( root.get( CategoryInfo_.documentType), documentType));
	}
	return em.createQuery( cq.where( p ) ).setMaxResults(maxCount).getResultList();
}
 
Example #12
Source File: NetworkDaoRdbmsImpl.java    From devicehive-java-server with Apache License 2.0 6 votes vote down vote up
@Override
public List<NetworkVO> list(String name, String namePattern, String sortField, boolean sortOrderAsc, Integer take, Integer skip, Optional<HivePrincipal> principal) {
    CriteriaBuilder cb = criteriaBuilder();
    CriteriaQuery<Network> criteria = cb.createQuery(Network.class);
    Root<Network> from = criteria.from(Network.class);

    Predicate[] nameAndPrincipalPredicates = CriteriaHelper.networkListPredicates(cb, from, ofNullable(name), ofNullable(namePattern), principal);
    criteria.where(nameAndPrincipalPredicates);

    CriteriaHelper.order(cb, criteria, from, ofNullable(sortField), sortOrderAsc);

    TypedQuery<Network> query = createQuery(criteria);
    cacheQuery(query, of(CacheConfig.refresh()));
    ofNullable(take).ifPresent(query::setMaxResults);
    ofNullable(skip).ifPresent(query::setFirstResult);
    List<Network> result = query.getResultList();
    Stream<NetworkVO> objectStream = result.stream().map(Network::convertNetwork);
    return objectStream.collect(Collectors.toList());
}
 
Example #13
Source File: Specifications.java    From base-framework with Apache License 2.0 6 votes vote down vote up
/**
 * 获取属性名字路径
 * 
 * @param propertyName 属性名
 * @param root Query roots always reference entities
 * 
 * @return {@link Path}
 */
public static Path<?> getPath(String propertyName,Root<?> root) {
	
	Path<?> path = null;
	
	if (StringUtils.contains(propertyName, ".")) {
		String[] propertys = StringUtils.splitByWholeSeparator(propertyName, ".");
		path = root.get(propertys[0]);
		for (int i = 1; i < propertys.length; i++) {
			path = path.get(propertys[i]);
		}
	} else {
		path = root.get(propertyName);
	}
	
	return path;
}
 
Example #14
Source File: ActionListToCurrentPersonPaging.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, Integer page, Integer size, JsonElement jsonElement)
		throws Exception {
	try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
		Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
		ActionResult<List<Wo>> result = new ActionResult<>();
		EntityManager em = emc.get(EmpowerLog.class);
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<Tuple> cq = cb.createQuery(Tuple.class);
		Root<EmpowerLog> root = cq.from(EmpowerLog.class);
		Predicate p = cb.equal(root.get(EmpowerLog_.toPerson), effectivePerson.getDistinguishedName());
		if (StringUtils.isNotEmpty(wi.getKey())) {
			String key = "%" + StringTools.escapeSqlLikeKey(wi.getKey()) + "%";
			p = cb.and(p, cb.like(root.get(EmpowerLog_.title), key, StringTools.SQL_ESCAPE_CHAR));
		}
		List<Wo> wos = emc.fetchDescPaging(EmpowerLog.class, Wo.copier, p, page, size,
				EmpowerLog.createTime_FIELDNAME);
		result.setData(wos);
		result.setCount(emc.count(EmpowerLog.class, p));
		return result;
	}
}
 
Example #15
Source File: UnmodifiableHibernateDao.java    From judgels with GNU General Public License v2.0 6 votes vote down vote up
private void applyFilters(CriteriaBuilder cb, CriteriaQuery<?> cq, Root<M> root, FilterOptions<M> options) {
    Predicate filterId = cb.gt(root.get(Model_.id), options.getLastId());
    Predicate filterEq = cb.and(options.getColumnsEq().entrySet()
            .stream()
            .map(e -> cb.equal(root.get(e.getKey()), e.getValue()))
            .toArray(Predicate[]::new));
    Predicate filterIn = cb.and(options.getColumnsIn().entrySet()
            .stream()
            .map(e -> root.get(e.getKey()).in(e.getValue()))
            .toArray(Predicate[]::new));
    Predicate filterLike = options.getColumnsLike().isEmpty() ? cb.and() : cb.or(options.getColumnsLike().entrySet()
            .stream()
            .map(e -> cb.like(root.get(e.getKey()), contains(e.getValue())))
            .toArray(Predicate[]::new));
    Predicate filterCustom = cb.and(options.getCustomPredicates()
            .stream()
            .map(f -> f.apply(cb, cq, root))
            .toArray(Predicate[]::new));

    cq.where(filterId, filterEq, filterIn, filterLike, filterCustom);
}
 
Example #16
Source File: OkrConfigSecretaryFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public List<String> listIdsByPerson( String name, String leaderName ) throws Exception {
	if( name == null || name.isEmpty() ){
		throw new Exception ( "the parameter: 'name' is null!" );
	}
	if( leaderName == null || leaderName.isEmpty() ){
		throw new Exception ( "the parameter: 'leaderName' is null!" );
	}
	EntityManager em = this.entityManagerContainer().get( OkrConfigSecretary.class );
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<OkrConfigSecretary> root = cq.from( OkrConfigSecretary.class);
	cq.select(root.get( OkrConfigSecretary_.id ));
	Predicate p = cb.equal( root.get( OkrConfigSecretary_.secretaryName ) , name );
	p = cb.and( p, cb.equal( root.get( OkrConfigSecretary_.leaderName ), leaderName ));
	return em.createQuery(cq.where(p)).getResultList();
}
 
Example #17
Source File: NoticeSystemController.java    From youkefu with Apache License 2.0 6 votes vote down vote up
@RequestMapping("/index")
@Menu(type = "notice", subtype = "noticesys")
public ModelAndView index(ModelMap map , HttpServletRequest request ,HttpServletResponse response ,@Valid String msg) {
	final String orgi = super.getOrgi(request);
	Page<Notice> noticeList = noticeRes.findAll(new Specification<Notice>(){
		@Override
		public Predicate toPredicate(Root<Notice> root, CriteriaQuery<?> query,CriteriaBuilder cb) {
			List<Predicate> list = new ArrayList<Predicate>();  

			list.add(cb.equal(root.get("orgi").as(String.class), orgi));
			list.add(cb.equal(root.get("type").as(String.class), UKDataContext.NoticeType.SYSTEMUPGRADE.toString()));

			Predicate[] p = new Predicate[list.size()];  
			return cb.and(list.toArray(p));   
		}}, new PageRequest(super.getP(request), super.getPs(request), Sort.Direction.DESC, new String[] { "createtime" }));
	
	
	map.addAttribute("noticeList",noticeList) ;
	map.addAttribute("msg",msg) ;
	map.addAttribute("userList",userRes.findByOrgi(orgi)) ;
	map.addAttribute("type",UKDataContext.NoticeType.SYSTEMUPGRADE.toString());
	return request(super.createAppsTempletResponse("/apps/notice/index")) ;
}
 
Example #18
Source File: BaseAction.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
protected <T extends JpaObject> String idlePortalAlias(Business business, String alias, String excludeId)
		throws Exception {
	if (StringUtils.isEmpty(alias)) {
		return "";
	}
	List<String> list = new ArrayList<>();
	list.add(alias);
	for (int i = 1; i < 99; i++) {
		list.add(alias + String.format("%02d", i));
	}
	list.add(StringTools.uniqueToken());
	EntityManager em = business.entityManagerContainer().get(Portal.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<Portal> root = cq.from(Portal.class);
	Predicate p = root.get(Portal_.alias).in(list);
	if (StringUtils.isNotEmpty(excludeId)) {
		p = cb.and(p, cb.notEqual(root.get(JpaObject.id_FIELDNAME), excludeId));
	}
	cq.select(root.get(Portal_.alias)).where(p);
	List<String> os = em.createQuery(cq).getResultList();
	list = ListUtils.subtract(list, os);
	return list.get(0);
}
 
Example #19
Source File: ApplicationFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public List<String> listAvailable(EffectivePerson effectivePerson, List<String> roles, List<String> identities,
		List<String> units) throws Exception {
	List<String> list = new ArrayList<>();
	EntityManager em = this.entityManagerContainer().get(Application.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<Application> root = cq.from(Application.class);
	cq.select(root.get(Application_.id)).distinct(true);
	if (effectivePerson.isNotManager() && (!this.business().organization().person().hasRole(effectivePerson,
			OrganizationDefinition.Manager, OrganizationDefinition.ProcessPlatformManager))) {
		Predicate p = cb.and(cb.isEmpty(root.get(Application_.availableIdentityList)),
				cb.isEmpty(root.get(Application_.availableUnitList)));
		p = cb.or(p, cb.isMember(effectivePerson.getDistinguishedName(), root.get(Application_.controllerList)));
		p = cb.or(p, cb.equal(root.get(Application_.creatorPerson), effectivePerson.getDistinguishedName()));
		if (ListTools.isNotEmpty(identities)) {
			p = cb.or(p, root.get(Application_.availableIdentityList).in(identities));
		}
		if (ListTools.isNotEmpty(units)) {
			p = cb.or(p, root.get(Application_.availableUnitList).in(units));
		}
		cq.where(p);
	}
	list = em.createQuery(cq.distinct(true)).getResultList();
	return list;
}
 
Example #20
Source File: OkrTaskFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * 根据待办类别和用户身份,查询待办列表
 * @param taskTypeList
 * @param userIdentity
 * @return
 * @throws Exception 
 */
public List<OkrTask> listReadByTaskType( List<String> taskTypeList, String userIdentity, String workTypeName ) throws Exception {
	List<OkrTask> okrTaskList = null;
	EntityManager em = this.entityManagerContainer().get( OkrTask.class );
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery< OkrTask > cq = cb.createQuery( OkrTask.class );
	Root<OkrTask> root = cq.from( OkrTask.class);
	Predicate p = root.get( OkrTask_.dynamicObjectType ).in( taskTypeList );
	p = cb.and( p, cb.equal( root.get( OkrTask_.targetIdentity ), userIdentity ) );
	p = cb.and( p, cb.equal( root.get( OkrTask_.processType ), "READ" ) );
	if( workTypeName != null && !workTypeName.isEmpty() ){
		p = cb.and( p, cb.equal( root.get( OkrTask_.workType ), workTypeName ) );
	}
	okrTaskList = em.createQuery(cq.where(p)).getResultList();
	if( okrTaskList == null ){
		return null;
	}else{
		return okrTaskList;
	}
}
 
Example #21
Source File: Business.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
public List<String> expendUnitToPersonId(List<String> unitList) throws Exception {
	if (ListTools.isEmpty(unitList)) {
		return new ArrayList<String>();
	}
	List<String> identityIds = this.expendUnitToIdentityId(unitList);
	if (ListTools.isEmpty(identityIds)) {
		return new ArrayList<String>();
	}
	EntityManager em = this.entityManagerContainer().get(Identity.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<Identity> root = cq.from(Identity.class);
	Predicate p = cb.isMember(root.get(Identity_.id), cb.literal(identityIds));
	List<String> personIds = em.createQuery(cq.select(root.get(Identity_.person)).where(p)).getResultList();
	personIds = ListTools.trim(personIds, true, true);
	return personIds;
}
 
Example #22
Source File: SecurityRoleDaoImpl.java    From herd with Apache License 2.0 6 votes vote down vote up
@Override
public SecurityRoleEntity getSecurityRoleByName(String securityRoleName)
{
    // Create the criteria builder and the criteria.
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<SecurityRoleEntity> criteria = builder.createQuery(SecurityRoleEntity.class);

    // The criteria root is the security role.
    Root<SecurityRoleEntity> securityRoleEntity = criteria.from(SecurityRoleEntity.class);

    // Create the standard restrictions (i.e. the standard where clauses).
    List<Predicate> predicates = new ArrayList<>();
    predicates.add(builder.equal(builder.upper(securityRoleEntity.get(SecurityRoleEntity_.code)), securityRoleName.toUpperCase()));

    // Add the clauses for the query.
    criteria.select(securityRoleEntity).where(builder.and(predicates.toArray(new Predicate[predicates.size()])));

    return executeSingleResultQuery(criteria,
        String.format("Found more than one security role with parameters {securityRoleName=\"%s\"}.", securityRoleName));
}
 
Example #23
Source File: StorageDaoImpl.java    From herd with Apache License 2.0 6 votes vote down vote up
@Override
public StorageEntity getStorageByName(String storageName)
{
    // Create the criteria builder and the criteria.
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<StorageEntity> criteria = builder.createQuery(StorageEntity.class);

    // The criteria root is the namespace.
    Root<StorageEntity> storageEntity = criteria.from(StorageEntity.class);

    // Create the standard restrictions (i.e. the standard where clauses).
    Predicate queryRestriction = builder.equal(builder.upper(storageEntity.get(StorageEntity_.name)), storageName.toUpperCase());

    criteria.select(storageEntity).where(queryRestriction);

    return executeSingleResultQuery(criteria, String.format("Found more than one storage with \"%s\" name.", storageName));
}
 
Example #24
Source File: JpaSpecs.java    From spring4-sandbox with Apache License 2.0 6 votes vote down vote up
public static Specification<Conference> pastConferences(final Date past) {
	return new Specification<Conference>() {
		@Override
		public Predicate toPredicate(Root<Conference> root,
				CriteriaQuery<?> query, CriteriaBuilder cb) {
			Expression<Timestamp> currentTimestamp = cb.currentTimestamp();
			if (past == null) {
				return cb.greaterThan(currentTimestamp,
						root.get("endedDate").as(Date.class));
			} else {
				return cb.and(cb.greaterThan(currentTimestamp,
						root.get("endedDate").as(Date.class)), cb
						.greaterThan(
								root.get("startedDate").as(Date.class),
								past));
			}
		}
	};
}
 
Example #25
Source File: JpaStorage.java    From apiman with Apache License 2.0 6 votes vote down vote up
/**
 * @see io.apiman.manager.api.core.IStorageQuery#getUserMemberships(java.lang.String)
 */
@Override
public Set<RoleMembershipBean> getUserMemberships(String userId) throws StorageException {
    Set<RoleMembershipBean> memberships = new HashSet<>();
    beginTx();
    try {
        EntityManager entityManager = getActiveEntityManager();
        CriteriaBuilder builder = entityManager.getCriteriaBuilder();
        CriteriaQuery<RoleMembershipBean> criteriaQuery = builder.createQuery(RoleMembershipBean.class);
        Root<RoleMembershipBean> from = criteriaQuery.from(RoleMembershipBean.class);
        criteriaQuery.where(builder.equal(from.get("userId"), userId));
        TypedQuery<RoleMembershipBean> typedQuery = entityManager.createQuery(criteriaQuery);
        List<RoleMembershipBean> resultList = typedQuery.getResultList();
        memberships.addAll(resultList);
        return memberships;
    } catch (Throwable t) {
        logger.error(t.getMessage(), t);
        throw new StorageException(t);
    } finally {
        rollbackTx();
    }
}
 
Example #26
Source File: StaticEntityRepositoryImpl.java    From we-cmdb with Apache License 2.0 6 votes vote down vote up
private <T> TypedQuery<T> doQueryCrossRes(Class<T> domainClazz, CrossResRequest request, boolean selectCount) {
    CriteriaBuilder cb = entityManager.getCriteriaBuilder();
    EntityGraph<T> rootEg = entityManager.createEntityGraph(domainClazz);

    CriteriaQuery query = cb.createQuery(domainClazz);
    Root<T> root = query.from(domainClazz);
    if (selectCount) {
        query.select(cb.count(root));
    }
    List<Predicate> predicates = new LinkedList<>();
    queryJoin(cb, query, root, request.getRootFilterPath(), rootEg, null, predicates);

    if (predicates.size() > 0) {
        if (FilterRelationship.Or.equals(request.getFilterRs())) {
            query.where(cb.or(predicates.toArray(new Predicate[0])));
        } else {
            query.where(cb.and(predicates.toArray(new Predicate[0])));
        }
    }
    TypedQuery<T> typedQuery = entityManager.createQuery(query);
    if (!selectCount) {
        typedQuery.setHint("javax.persistence.fetchgraph", rootEg);
    }
    return typedQuery;
}
 
Example #27
Source File: ActionFilterAttribute.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
private List<NameValueCountPair> listCompletedTimeMonthPair(Business business, EffectivePerson effectivePerson,
		String applicationId) throws Exception {
	EntityManager em = business.entityManagerContainer().get(WorkCompleted.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<String> cq = cb.createQuery(String.class);
	Root<WorkCompleted> root = cq.from(WorkCompleted.class);
	Predicate p = cb.equal(root.get(WorkCompleted_.creatorPerson), effectivePerson.getDistinguishedName());
	p = cb.and(p, cb.equal(root.get(WorkCompleted_.application), applicationId));
	cq.select(root.get(WorkCompleted_.completedTimeMonth)).where(p).distinct(true);
	List<String> list = em.createQuery(cq).getResultList();
	List<NameValueCountPair> wraps = new ArrayList<>();
	for (String str : list) {
		NameValueCountPair o = new NameValueCountPair();
		o.setValue(str);
		o.setName(str);
		wraps.add(o);
	}
	return wraps;
}
 
Example #28
Source File: StatisticUnitForMonthFactory.java    From o2oa with GNU Affero General Public License v3.0 6 votes vote down vote up
/**
 * 根据组织名称,统计年月,统计顶层组织所有人员迟到次数总和
 * @param unitName
 * @param cycleYear
 * @param cycleMonth
 * @return
 * @throws Exception
 */
public Long sumLateCountByUnitYearAndMonth(List<String> unitName, String sYear, String sMonth) throws Exception{
	if( unitName == null || unitName.size() == 0 ){
		logger.error( new UnitNamesEmptyException() );
		return null;
	}		
	EntityManager em = this.entityManagerContainer().get( StatisticUnitForMonth.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<Long> cq = cb.createQuery(Long.class);
	Root<StatisticUnitForMonth> root = cq.from( StatisticUnitForMonth.class);		
	//查询总数
	cq.select( cb.sum( root.get(StatisticUnitForMonth_.lateCount) ) );		
	Predicate p = root.get(StatisticUnitForMonth_.unitName).in( unitName );
	if( sYear == null || sYear.isEmpty() ){
		logger.error( new StatisticYearEmptyException() );
	}else{
		p = cb.and( p, cb.equal( root.get(StatisticUnitForMonth_.statisticYear), sYear));
	}
	if( sMonth == null || sMonth.isEmpty() ){
		logger.error( new StatisticMonthEmptyException() );
	}else{
		p = cb.and( p, cb.equal( root.get(StatisticUnitForMonth_.statisticMonth), sMonth));
	}
	return em.createQuery(cq.where(p)).getSingleResult();
}
 
Example #29
Source File: HibernateGenericStore.java    From dhis2-core with BSD 3-Clause "New" or "Revised" License 6 votes vote down vote up
@Override
public List<AttributeValue> getAttributeValueByAttributeAndValue( Attribute attribute, String value )
{
    CriteriaBuilder builder = getCriteriaBuilder();

    CriteriaQuery<String> query = builder.createQuery( String.class );
    Root<T> root = query.from( getClazz() );

    query.select( builder.function( FUNCTION_JSONB_EXTRACT_PATH, String.class, root.get( "attributeValues" ) ,
        builder.literal( attribute.getUid() ) ) );

    query.where( builder.equal(
        builder.function( FUNCTION_JSONB_EXTRACT_PATH_TEXT, String.class, root.get( "attributeValues" ), builder.literal( attribute.getUid() ),  builder.literal( "value" ) ) , value ) );

    List<String> result = getSession().createQuery( query ).list();

    return JsonAttributeValueBinaryType.convertListJsonToListObject( result );
}
 
Example #30
Source File: IMConversationFactory.java    From o2oa with GNU Affero General Public License v3.0 5 votes vote down vote up
/**
 * 分页查询会话中的聊天消息
 * @param adjustPage
 * @param adjustPageSize
 * @param conversationId
 * @return
 * @throws Exception
 */
public List<IMMsg> listMsgWithConversationByPage(Integer adjustPage,
												 Integer adjustPageSize, String conversationId) throws Exception {
	EntityManager em = this.entityManagerContainer().get(IMMsg.class);
	CriteriaBuilder cb = em.getCriteriaBuilder();
	CriteriaQuery<IMMsg> cq = cb.createQuery(IMMsg.class);
	Root<IMMsg> root = cq.from(IMMsg.class);
	Predicate p = cb.equal(root.get(IMMsg_.conversationId), conversationId);
	cq.select(root).where(p).orderBy(cb.desc(root.get(IMMsg_.createTime)));
	return em.createQuery(cq).setFirstResult((adjustPage - 1) * adjustPageSize).setMaxResults(adjustPageSize)
			.getResultList();
}