2016-09-30 2 views
0

사용자가 입력 한 특정 열로 값을 업데이트하려고합니다. 여기 내 코드가 있습니다, 그것을 수정하기 위해 그것을 수정하는 사람이 있습니까?열 이름을 기반으로하는 JPA 업데이트

public void updateValue(String value, String id, String ww){ 
    Query q = em.createQuery("Update TableA e SET e.?1 = ?2 WHERE e.num = ?3"); 
    q.setParameter(1, ww); //since has many columns, user require to specific column to update 
    q.setParameter(2, value); 
    q.setParameter(3, id); 
    q.executeUpdate();  
} 

답변

2

당신은 JPA 2.1을 사용하는 경우가 ... 여기 ... 당신의 사건에 대한 기준 빌더 쿼리 가야 당신이 도와

public void updateValue(String value, String id, String ww){ 
    CriteriaBuilder cb = this.em.getCriteriaBuilder(); 

     // create update 
     CriteriaUpdate<TableAEntity> update = cb. 
     createCriteriaUpdate(TableAEntity.class); 

     // set the root class 
     Root e = update.from(TableAEntity.class); 

     // set update and where clause 
     update.set(ww, value); 
     update.where(cb.equalTo(e.get("num"), 
      id)); 

     // perform update 
     this.em.createQuery(update).executeUpdate(); 
} 
+0

감사를해야 할 수있는 일이지만, 난 이미 알아 그것을하는 방법, 난 그냥 간단한 문자열을 만듭니다. 문자열 s = "업데이트 표 A e SET e." + ww + "=? 1"+ "where e.num ="+ id; 그런 다음 작동중인 em.createQuery (s)를 넣으십시오. – helloworld1234

+0

@ChongZhengLun'+'로 추가하는 값이 사전 필터링 된 목록 중 하나인지 확인하지 않고서는 절대 수행하지 마십시오. 수행중인 작업은 전체 데이터베이스를 손상시킬 수있는 주요 보안 위험 요소입니다. – coladict

관련 문제