2017-07-25 21 views
1

如果我點擊一個API來顯示子實體的所有細節與父實體[映射可能OneToOne或ManyToOne等..]。我得到的輸出這樣的..如何通過彈簧休息API來限制訪問兒童實體和父實體的某些字段

{ 
    "fID": 19, 
    **"comments": "good",** 
    "recommendation": "rec", 
    "candidate": { 
    "candidateID": 400, 
    "firstName": "Raghu", 
    "lastName": "R", 
    "emailID": "[email protected]", 
    "phoneNumber": "9900000099", 
    **"password": "Hello",** 
    "gender": "1", 
    "candidateDOB": 1472169600000, 
    "userId": 22 
    }, 
    "inter": { 
    "interID": 14, 
    **"name": "Anu",** 
    "designation": "Dev" 
    }, 
    "Job": { 
    "id": 13, 
    "maxYearOfExperience": 9, 
    "minYearOfExperience": 3, 
    **"organizationName": "EFG"**  
    } 
} 

我的代碼是:

Query query = session.createQuery("from EntityName where ID= :id"); 
      query.setInteger("id", id); 
      result = query.uniqueResult(); 

我想隱藏顯示在上面的輸出領域中,粗體字[**] .. 我嘗試了一些方法,:

1的方法是:

EntityName example = new EntityName();    
       Example ex = Example.create(example).excludeProperty("password");    
       Criteria criteria = session.createCriteria(EntityName.class) 
              .add(Restrictions.eq("id", id)) 
              .add(ex); 
       EntityName= (EntityName) criteria.uniqueResult(); 

但這種方法是不工作作爲我的要求設計。 ENT。

第二個方法是:

Criteria criteria = session.createCriteria(EntityName.class) 
              .add(Restrictions.eq("id", id)); 
       ProjectionList projList = Projections.projectionList(); 
       projList.add(Projections.property("id")); 
       projList.add(Projections.property("Name")); 
       projList.add(Projections.property("authPerson")); 
       projList.add....so on 
       criteria.setProjection(projList); 

       Object obj = criteria.uniqueResult(); 
       if(obj != null){ 
       EntityName= (EntityName) obj;    
       } 

是否有任何其他的方式來解決這個問題? 在此先感謝。

回答

0

我得到了一個答案:

More fields.... 

    @JsonIgnore 
    private String password; 

    @JsonIgnore 
    public String getPassword() { 
     return password; 
    } 

    @JsonProperty 
    public void setPassword(String password) { 
     this.password = password; 
    } 

這會限制性能。 謝謝,