Hello all
I am trying to pass isolation level hints using query hints and
through JDBCFetchPlan (as explained in openJPA-182). I am unable to
see any isolation level hints appended to query.
Following is my test table
CREATE TABLE TEST11(
ID BIGINT NOT NULL,
prop1 VARCHAR(64),
prop2 VARCHAR(64),
CONSTRAINT TEST11_PK PRIMARY KEY(ID)
)!
And I am using this code (I tried whatever is commented also). However
what I see in SQL trace is
SELECT t0.id, t0.prop1, t0.prop2 FROM TEST11 t0 ORDER BY t0.id ASC
Any idea what I could be missing? Do I require any special setting in
persistence.xml for supplying hints?
Thanks
- rajeev
/* ================================================================
public static void testPlanIsolation() throws Exception{
EntityManager em = JPAUtil.getEntityManager();
JPAUtil.beginTransaction();
String jql = " select test from Test11 test order by test.id
";
Query q = em.createQuery(jql);
JDBCFetchPlan plan = (JDBCFetchPlan) ((OpenJPAQuery)
q).getFetchPlan();
plan.setIsolation(IsolationLevel.SERIALIZABLE);
plan.setReadLockMode(LockModeType.WRITE); // force a FOR UPDATE
List list = q.getResultList();
Test11 pojo ;
for(int i = 0 ; i < list.size(); i++) {
pojo = (Test11) list.get(i);
//System.out.println(pojo);
}
}
public static void testHintIsolation() throws Exception{
EntityManager em = JPAUtil.getEntityManager();
JPAUtil.beginTransaction();
String jql = " select test from Test11 test order by test.id
";
OpenJPAQuery q = (OpenJPAQuery) em.createQuery(jql);
//q.setHint("openjpa.hint.updateClause",true);
//q.setHint("openjpa.hint.isolationLevel", "serializable");
//q.setHint("openjpa.FetchPlan.Isolation", "READ_UNCOMMITTED" );
//q.setHint("openjpa.FetchPlan.ReadLockMode",
LockModeType.READ);
q.setHint("openjpa.hint.updateClause",true);
q.setHint("openjpa.hint.isolationLevel", "read-uncommitted");
//q.setHint("openjpa.hint.isolationLevel", "serializable");
System.out.println(q.getQueryString());
List list = q.getResultList();
Test11 pojo ;
for(int i = 0 ; i < list.size(); i++) {
pojo = (Test11) list.get(i);
//System.out.println(pojo);
}
}
=================================================================== */