I want to update value to a specific column entered by the user. Here are my codes, do anyone how to modify it to correct one?
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(); }
Advertisement
Answer
You should go for criteria builder query for your case… if you are using JPA 2.1.. here is something you can should do
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(); }