OpenJPA грязная подсказка для чтения - PullRequest
4 голосов
/ 01 июня 2011

У нас есть следующий стек DAO:

  • DB2 9.7 Express-C
  • OpenJPA 2.0.1
  • Пружина 3.0.5
  • Битроникс 2.1.1

Как указать OpenJPA для добавления предложения WITH UR sql в конец запроса?

Я бы просматривал сайты и руководства в течение нескольких дней, это должно быть примерно так:

Query q = em.createQuery("select m from Magazine m where ... ");
q.setHint("openjpa.FetchPlan.ReadLockMode","WRITE");
List r = q.getResultList();

но, увы, мне не удалось найти работающее свойство OpenJPA, которое было бы передано в качестве аргумента setHint() и в результате привело бы к WITH UR, поэтому я использую запросы SpringJDBC, которые, к сожалению, больше не могу использовать.

Есть идеи? Большое спасибо

Ответы [ 2 ]

4 голосов
/ 01 июня 2011

OpenJPA не поддерживает использование предложения WITH UR с JPQL.Вы всегда можете использовать собственный запрос для этой функции.

0 голосов
/ 23 сентября 2011

У меня сейчас довольно похожая проблема - может показаться, что установка:

query.setHint("openjpa.FetchPlan.Isolation", "READ_UNCOMMITTED");

поможет.К сожалению, исходный код показывает, что константа withURClause из org.apache.openjpa.jdbc.sql.DB2Dictionary никогда не читается.

Кроме того, OpenJPA never учитывает подсказку плана выборки, если запрос не FOR UPDATE,У меня есть оператор выбора, который блокируется на эксклюзивных блокировках, и он может действительно работать с незафиксированными данными - нет доступа к OpenJPA.

...