2015-09-04 2 views
-1

Эй, ребята, у меня проблема с запросом JPA.Что не так с синтаксисом SQL?

Здесь Code-сниппета:

TypedQuery<ViVertragDl> q = entityManager.createQuery("select * from ViVertragDl c where c.id = " + editContract.getId(), ViVertragDl.class); 
List<ViVertragDl> jpaContractDls = q.getResultList(); 

И Glassfish Log бросает эту ошибку, после тестирования в SOAP-интерфейса:

Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLException 
Exception Description: Syntax error parsing [select * from ViVertragDl c where c.id = 51]. 
[28, 28] A select statement must have a FROM clause. 
[7, 7] The left expression is missing from the arithmetic expression. 
[9, 27] The right expression is not an arithmetic expression. 
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155) 
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:334) 
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:278) 
    at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildQuery(HermesParser.java:163) 
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:142) 
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:116) 
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:102) 
    at org.eclipse.persistence.internal.jpa.EJBQueryImpl.<init>(EJBQueryImpl.java:86) 
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1603) 
    ... 91 more 

Он просто говорит: «Избранная оператор должен иметь FROM Пункт. ", Но, на мой взгляд, есть одно.

+0

Хорошо, установил его сам. Там должно быть «c», а не «*». «Wildmarks», похоже, не работают в JPQL. – TheRealHypo

+1

«Кажется, не работает»? JPQL имеет определенный SYNTAX. Это не догадки. www.datanucleus.org/products/accessplatform_4_2/jpa/jpql.html –

ответ

2

Я думаю, вы должны попробовать:

select c from ViVertragDl c where c.id = " + editContract.getId() 

http://www.objectdb.com/java/jpa/query/jpql/select

+0

Спасибо, исправили это как минута раньше. – TheRealHypo

+0

@patrick Я смотрю на objectdb с уважением, кажется очень интересной средой. Думаете ли вы, что опыт этой интегрированной реализации objectDB + JPA может быть расширен до «классических» сред JPA? Вы используете objectdb в тяжелых проектах реального мира? –

+0

@Jacek Cz На самом деле я все еще студент и использую веб-сайт в качестве ссылки для правильного использования API Java Persistence. – Mike

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