我有一个实体:
@Entity
@Table
public class ClassA{
public static final String COL_VERSION = "VersionABC";
public static final String COL_DATA = "DataABC";
@Column(name = COL_VERSION)
private String version;
@Column(name = COL_DATA)
private String data;
}
在我的 DAO 中:
EntityManager mgr = getEntityManager();
CriteriaBuilder builder = mgr.getCriteriaBuilder();
CriteriaUpdate<ClassA> criteriaUpdate = builder.createCriteriaUpdate(ClassA.class);
Root<ClassA> root = criteriaUpdate.from(ClassA.class);
criteriaUpdate.set(root.get("data"), newData);
if (//condition){
criteriaUpdate.set(root.get("version"), newVersion);
}
mgr.createQuery(criteriaUpdate).executeUpdate();
此代码有效,但如何使用 ClassA.COL_VERSION
和 ClassA.COL_DATA
而不是使用硬代码“数据”和“版本”?
最佳答案
try like this it should be _. instead of ._
EntityManager mgr = getEntityManager();
CriteriaBuilder builder = mgr.getCriteriaBuilder();
CriteriaUpdate<ClassA> criteriaUpdate = builder.createCriteriaUpdate(ClassA.class);
Root<ClassA> root = criteriaUpdate.from(ClassA.class);
criteriaUpdate.set(root.get(ClassA_.data), newData);
if (//condition){
criteriaUpdate.set(root.get(ClassA_.version), newVersion);
}
mgr.createQuery(criteriaUpdate).executeUpdate();
关于java - 使用 CriteriaUpdate 查询时如何避免硬编码 attributeName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39240826/