2012-07-25 89 views
0

我想知道是否有一种方法将条件添加到冬眠分离?休眠分离条件

Criterion creator; 

      if(securityService.hasRole(RoleConstants.ROLE_CREATOR) { 
       creator = Restrictions.conjunction() 
       .add(Restrictions.eq("creator", this.userInfo.getUser())) 
       .add(Restrictions.eq("currentState.id", DatabaseConstants.STATE_DRAFT)); 
      } 

    Criterion completeCondition = Restrictions.disjunction().add(creator) 
                  .add(authorizer) 
                  .add(assessor); 

感谢

+0

是不是你的代码已经做了?如果不是,你是什么意思? – 2012-07-25 14:41:01

+0

@JB Nizet,请参阅下面的答案。 – 2012-07-25 14:54:10

回答

0

我想通了如何使用析取条件。

Disjunction dis = Restrictions.disjunction(); 
      if(this.securityService.hasRole(RoleConstants.ROLE_AUTHORIZER)) { 
       dis.add(Restrictions.eq("currentState.id", DatabaseConstants.STATE_AUTHORIZER_REVIEW)); 
      } 

      if(this.securityService.hasRole(RoleConstants.ROLE_ASSIGNOR)) { 
       dis.add(Restrictions.eq("currentState.id", DatabaseConstants.STATE_ASSIGNOR_REVIEW)); 
      } 

      if(this.securityService.hasRole(RoleConstants.ROLE_ASSESSOR)) { 
       dis.add(Restrictions.eq("currentState.id", DatabaseConstants.STATE_ASSESSOR_REVIEW)); 
      } 

    Criteria criteriaStatic = this.session.createCriteria(PurchaseRequest.class) 
      .add(Restrictions.isNull("authorizedArchiveDate"))  
      .add(dis);