下面列出了org.hibernate.criterion.Restrictions#or ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static Criterion CriterionInRestrictionSplitter(String property, Collection<?> values) {
Objects.requireNonNull(property);
Objects.requireNonNull(values);
Criterion criterion = null;
List<?> list = new ArrayList<>(values);
int listSize = list.size();
for (int i = 0; i < listSize; i += MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
List<?> subList;
if (listSize > i + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
subList = list.subList(i, (i + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST));
} else {
subList = list.subList(i, listSize);
}
if (criterion == null) {
criterion = Restrictions.in(property, subList);
} else {
criterion = Restrictions.or(criterion, Restrictions.in(property, subList));
}
}
return criterion;
}
public static Criterion CriterionInRestrictionSplitter(String property, Collection<?> values) {
Objects.requireNonNull(property);
Objects.requireNonNull(values);
Criterion criterion = null;
List<?> list = new ArrayList<>(values);
int listSize = list.size();
for (int i = 0; i < listSize; i += MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
List<?> subList;
if (listSize > i + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST) {
subList = list.subList(i, (i + MAX_NUMBER_OF_SQL_PARAMETERS_IN_LIST));
} else {
subList = list.subList(i, listSize);
}
if (criterion == null) {
criterion = Restrictions.in(property, subList);
} else {
criterion = Restrictions.or(criterion, Restrictions.in(property, subList));
}
}
return criterion;
}
@Override
public Long getStoppedCollectionsCount(String terms) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteria.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id"));
LogicalExpression or = Restrictions.or(
Restrictions.eq("status", CollectionStatus.STOPPED),
Restrictions.eq("status", CollectionStatus.NOT_RUNNING)
);
LogicalExpression orAll = Restrictions.or(
or,
Restrictions.eq("status", CollectionStatus.FATAL_ERROR)
);
criteria.add(orAll);
addCollectionSearchCriteria(terms, criteria);
ScrollableResults scroll = criteria.scroll();
int i = scroll.last() ? scroll.getRowNumber() + 1 : 0;
return Long.valueOf(i);
}
private void addCollectionSearchCriteria(String terms, Criteria criteria) {
if (StringUtils.hasText(terms)){
String wildcard ='%'+ URLDecoder.decode(terms.trim())+'%';
LogicalExpression orNameCode = Restrictions.or(
Restrictions.ilike("name", wildcard),
Restrictions.ilike("code", wildcard)
);
LogicalExpression orAll = Restrictions.or(
orNameCode,
Restrictions.ilike("track", wildcard)
);
criteria.add(orAll);
}
}
public static Criterion getCategoryCriterionRestriction(CategoryCriterion categoryCriterion) {
Criterion restriction = null;
if (categoryCriterion.prefix != null && categoryCriterion.prefix.length() > 0) {
if (categoryCriterion.caseSensitive) {
restriction = Restrictions.like(categoryCriterion.field, categoryCriterion.prefix, categoryCriterion.matchMode);
} else {
restriction = Restrictions.ilike(categoryCriterion.field, categoryCriterion.prefix, categoryCriterion.matchMode);
}
} else if (EmptyPrefixModes.NON_EMPTY_ROWS.equals(categoryCriterion.emptyPrefixMode)) {
restriction = Restrictions.not(Restrictions.or(Restrictions.eq(categoryCriterion.field, ""), Restrictions.isNull(categoryCriterion.field)));
} else if (EmptyPrefixModes.EMPTY_ROWS.equals(categoryCriterion.emptyPrefixMode)) {
restriction = Restrictions.or(Restrictions.eq(categoryCriterion.field, ""), Restrictions.isNull(categoryCriterion.field));
}
return restriction;
}
private Criterion getCriterionLogical(BinaryOperator operator,
Criterion left, Criterion right)
{
Criterion criterion;
if (left == null && right == null)
{
criterion = null;
}
else if (left != null && right != null)
{
switch (operator)
{
case AND:
{
criterion = Restrictions.and(left, right);
break;
}
case OR:
{
criterion = Restrictions.or(left, right);
break;
}
default:
{
throw new UnsupportedOperationException(
"Unsupported operator: " + operator.toUriLiteral());
}
}
}
else if (left == null)
{
criterion = right;
}
else
{
criterion = left;
}
return criterion;
}
@Override
public Collection getRunningCollectionStatusByUser(Long userId) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
//criteria.add(Restrictions.eq("user.id", userId));
//criteria.add(Restrictions.eq("status", CollectionStatus.RUNNING));
LogicalExpression or = Restrictions.or(
Restrictions.eq("status", CollectionStatus.RUNNING),
Restrictions.eq("status", CollectionStatus.RUNNING_WARNING)
);
LogicalExpression orAll = Restrictions.or(
or,
Restrictions.eq("status", CollectionStatus.WARNING)
);
/*Is this check needed?
*
* LogicalExpression and = Restrictions.and(
orAll,
Restrictions.ne("status", CollectionStatus.TRASHED)
);*/
LogicalExpression andAll = Restrictions.and(
orAll,
Restrictions.eq("owner.id", userId)
);
criteria.add(andAll);
//criteria.add(Restrictions.ne("status", CollectionStatus.TRASHED));
return (Collection) criteria.uniqueResult();
}
@Override
public Long getRunningCollectionsCount(String terms) {
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteria.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id"));
LogicalExpression or = Restrictions.or(
Restrictions.eq("status", CollectionStatus.RUNNING),
Restrictions.eq("status", CollectionStatus.RUNNING_WARNING)
);
LogicalExpression or2 = Restrictions.or(
or,
Restrictions.eq("status", CollectionStatus.INITIALIZING)
);
LogicalExpression orAll = Restrictions.or(
or2,
Restrictions.eq("status", CollectionStatus.WARNING)
);
LogicalExpression andAll = Restrictions.and(
orAll,
Restrictions.ne("status", CollectionStatus.TRASHED)
);
criteria.add(andAll);
addCollectionSearchCriteria(terms, criteria);
ScrollableResults scroll = criteria.scroll();
int i = scroll.last() ? scroll.getRowNumber() + 1 : 0;
return Long.valueOf(i);
}
@SuppressWarnings("unchecked")
@Override
public List<Collection> getRunningCollections(Integer start, Integer limit, String terms, String sortColumn, String sortDirection) {
Criteria criteriaIds = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteriaIds.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id"));
LogicalExpression or = Restrictions.or(
Restrictions.eq("status", CollectionStatus.RUNNING),
Restrictions.eq("status", CollectionStatus.RUNNING_WARNING)
);
LogicalExpression or2 = Restrictions.or(
or,
Restrictions.eq("status", CollectionStatus.INITIALIZING)
);
LogicalExpression orAll = Restrictions.or(
or2,
Restrictions.eq("status", CollectionStatus.WARNING)
);
LogicalExpression andAll = Restrictions.and(
orAll,
Restrictions.ne("status", CollectionStatus.TRASHED)
);
criteriaIds.add(andAll);
addCollectionSearchCriteria(terms, criteriaIds);
searchCollectionsAddOrder(sortColumn, sortDirection, criteriaIds);
if (start != null) {
criteriaIds.setFirstResult(start);
}
if (limit != null) {
criteriaIds.setMaxResults(limit);
}
List<Integer> ids = criteriaIds.list();
if (ids.size() == 0){
return Collections.emptyList();
}
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.in("id", ids));
searchCollectionsAddOrder(sortColumn, sortDirection, criteria);
return criteria.list();
}
@SuppressWarnings("unchecked")
@Override
public List<Collection> getStoppedCollections(Integer start, Integer limit, String terms, String sortColumn, String sortDirection) {
Criteria criteriaIds = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteriaIds.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id"));
LogicalExpression or = Restrictions.or(
Restrictions.eq("status", CollectionStatus.STOPPED),
Restrictions.eq("status", CollectionStatus.NOT_RUNNING)
);
LogicalExpression orAll = Restrictions.or(
or,
Restrictions.eq("status", CollectionStatus.FATAL_ERROR)
);
criteriaIds.add(orAll);
addCollectionSearchCriteria(terms, criteriaIds);
searchCollectionsAddOrder(sortColumn, sortDirection, criteriaIds);
if (start != null) {
criteriaIds.setFirstResult(start);
}
if (limit != null) {
criteriaIds.setMaxResults(limit);
}
List<Integer> ids = criteriaIds.list();
if (ids.size() == 0){
return Collections.emptyList();
}
Criteria criteria = getHibernateTemplate().getSessionFactory().getCurrentSession().createCriteria(Collection.class);
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
criteria.add(Restrictions.in("id", ids));
searchCollectionsAddOrder(sortColumn, sortDirection, criteria);
return criteria.list();
}
/**
* 设置组合后的Criterion OR关系
*
* @param query
* @param source
* @param dest
* @return
*/
public Criterion getor(Criterion c1,Criterion c2) {
return Restrictions.or(c1, c2);
}
/**
* 设置Or查询
*
* @param query
* @param source条件1
* @param dest条件2
* @return
*/
public Criterion or(CriteriaQuery query, int source, int dest) {
return Restrictions.or(query.getCriterionList().getParas(source), query
.getCriterionList().getParas(dest));
}
/**
* 设置or(Criterion c, CriteriaQuery query, int source)(或)查询条件
*
* @param keyname
* @param keyvalue1
* @param keyvalue2
*/
public Criterion or(Criterion c, CriteriaQuery query, int source) {
return Restrictions.or(c, query.getCriterionList().getParas(source));
}
/**
* 设置组合后的Criterion OR关系
*
* @param query
* @param source
* @param dest
* @return
*/
public Criterion getor(Criterion c1,Criterion c2) {
return Restrictions.or(c1, c2);
}
/**
* 设置Or查询
*
* @param query
* @param source条件1
* @param dest条件2
* @return
*/
public Criterion or(CriteriaQuery query, int source, int dest) {
return Restrictions.or(query.getCriterionList().getParas(source), query
.getCriterionList().getParas(dest));
}
/**
* 设置or(Criterion c, CriteriaQuery query, int source)(或)查询条件
*
* @param keyname
* @param keyvalue1
* @param keyvalue2
*/
public Criterion or(Criterion c, CriteriaQuery query, int source) {
return Restrictions.or(c, query.getCriterionList().getParas(source));
}