Thursday, June 25, 2009
JPA в Google App Engine
Як відомо, робота зі стореджем в google app engine зроблена через JDO i JPA. В якості імплементації цих технологій google вибрав DataNucleus. Так от, якщо з JDO наче все більш чи меньше все працює, то з підтримкою JPA не все так добре. А саме, якщо у вас є параметризований запит і ви очікуєте отримати колекцію об'єктів, то, скоріше за все, у вас нічого не вийде. Щоб отримати колекцію з результатами, як правило, визивається javax.persistence.Query.getResultList(). Реалізація цього методу знаходиться у класі org.datanucleus.jpa.JPAQuery. Так от в момент виконання запиту до бази, ця реалізація замість того щоб передати список параметрів зі значеннями. передає null - query.executeWithMap(null). Ну і ви відповідно отримуєте NullPointerException.
Subscribe to:
Post Comments (Atom)
Ахрєнєть :) Це блін якась лажа, якщо чесно. Може просто там щось десь треба наконфігірувати? Тіпа jndi чи щось таке?
ReplyDeleteБільш детальний аналіз показав, що при визові метода setMaxResults виконується скидання стану класу і, таким чином, всі параметри які були передані до цього затераються. Висновок: параметри передавати в останню чергу.
ReplyDeleteБага зареєстрована за номером 38 і в останній версії java sdk пофікшена