Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to avoid hard code attributeName when using CriteriaUpdate Query?

I have an entity:

@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;

}   

And in my 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();

This code worked, but how to use ClassA.COL_VERSION and ClassA.COL_DATA instead of using hard code "data" and "version" ?

like image 777
Viet Avatar asked Aug 28 '26 02:08

Viet


1 Answers

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();

refer http://www.programcreek.com/java-api-examples/index.php?api=javax.persistence.criteria.CriteriaUpdate

like image 127
Jekin Kalariya Avatar answered Aug 30 '26 14:08

Jekin Kalariya



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!