2015-09-04 34 views
-1

嘿家伙我有一个JPA查询问题。SQL语法有什么问题?

这里的代码片段:

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

和GlassFish日志抛出这个错误,在SOAP-UI测试后:

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 

它只是说“select语句必须有FROM子句“,但在我看来有一个。

+0

好吧,我自己固定它。应该有“c”而不是“*”Wildmarks似乎不能在JPQL – TheRealHypo

+1

中工作“似乎不工作”? JPQL有一个定义的语法。这不是猜测。 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其实我仍然是一名学生,并使用该网站作为正确使用Java持久性API的参考。 – Mike