JPA基于列名更新

时间:2016-09-30 03:22:18

标签: java 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();    
}

1 个答案:

答案 0 :(得分:3)

您应该针对您的案例寻找标准构建器查询...如果您使用的是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();
}