2015-09-03 5 views
0

я хотел бы создать (crtieria-) запрос к динамической модели, но я всегда получаю исключениеEclipseLink JPA Динамическая модель и критерии запроса

No [EntityType] was found for the key class [demo.DynamicResult] in the Metamodel 

в последней строке

final CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder(); 

final CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery(); 
DynamicHelper helper = new DynamicHelper(JpaHelper.getServerSession(emf)); 
Class<? extends DynamicEntity> rootclass = helper.getType("demo.DynamicResult").getJavaClass(); 
query.from(rootclass); 

DynamicResult генерируется следующим кодом

ServerSession serverSession = JpaHelper.getEntityManager(entityManager).getServerSession(); 
DynamicClassLoader dcl = DynamicClassLoader.lookup(serverSession); 
JPADynamicHelper jpaDynamicHelper = new JPADynamicHelper(entityManager); 
Class<?> dynamicResult = dcl.createDynamicClass("demo.DynamicResult"); 

JPADynamicTypeBuilder dynamicResultBuilder = new JPADynamicTypeBuilder(dynamicResult, null, "DynamicResult"); 

dynamicResultBuilder.addDirectMapping("id", String.class, "id"); 

     //Some more addDirectMappings .... 

dynamicResultBuilder.setPrimaryKeyFields("id"); 
type = dynamicResultBuilder.getType(); 
jpaDynamicHelper.addTypes(false, false, type); 

Что я пропустил? Возможно ли, что такой запрос возможен?

С уважением

ответ

1

Вы можете быть ударяя https://bugs.eclipse.org/bugs/show_bug.cgi?id=429760 ошибки. Возникла проблема с копированием вновь созданных метаданных динамических объектов в текущий сеанс. Проверьте эту ошибку и приложите разницы. jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/dynamic/simple/SimpleQueryTestSuite.java набор тестов содержит тест, который делает аналогичную вещь - создает динамическую сущность и запускает запрос JPQL к ней в рамках одного и того же транзакция (UnitOfWork). Я бы попробовал последние 2.7.0 или 2.6.1 (не использовать .WAS) build from https://www.eclipse.org/eclipselink/downloads/nightly.php, чтобы узнать, отлично ли это работает для вас.

Смежные вопросы