내 user
테이블의 모든 데이터를 내 DerbyDB 스키마 gomobile
에서 쿼리하려고합니다.'gomobile.user u'는 FROM 절의 첫 번째 선언이 될 수 없습니다.
데이터베이스에 대한 연결을 성공적으로 설정하고 데이터베이스 테이블에 해당하는 모든 열과 함께 JPA 엔터티를 만들었습니다. 내가 사용하는 경우
<persistence-unit name="Eclipselink" transaction-type="RESOURCE_LOCAL">
<class>jpa.entities.User</class>
<properties>
<property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/gomobile;create=true" />
<property name="javax.persistence.jdbc.user" value="gomobile" />
<property name="javax.persistence.jdbc.password" value="mypassword" />
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver" />
</properties>
</persistence-unit>
편집
:
이Exception in thread "main" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Problem compiling [SELECT u FROM gomobile.user as u].
[14, 41] 'gomobile.user as u' cannot be the first declaration of the FROM clause.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1625)
at com.sap.sapchat.jpa.entities.User.getAll(User.java:45)
at com.sap.sapchat.jpa.entities.InitDatabase.main(InitDatabase.java:50)
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT u FROM gomobile.user as u].
[14, 41] 'gomobile.user as u' cannot be the first declaration of the FROM clause.
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildException(HermesParser.java:155)
at org.eclipse.persistence.internal.jpa.jpql.HermesParser.validate(HermesParser.java:347)
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)
... 3 more
의 persistence.xml에서 내 지속성 선언은 다음과 같습니다
@Entity
@Table(name = "user", schema = "gomobile")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
// all columns
public static List<User> getAll() {
String queryString = "SELECT u FROM gomobile.user u";
EntityManager em = Persistence.createEntityManagerFactory("Eclipselink").createEntityManager();
return em.createQuery(queryString, User.class).getResultList();
}
}
이
은 stracktrace입니다String queryString = "SELECT * FROM gomobile.user u";
는이 오류 얻을 :
Exception in thread "main" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [SELECT * FROM gomobile.user u].
[38, 38] A select statement must have a FROM clause.
[7, 7] The left expression is missing from the arithmetic expression.
[9, 38] The right expression is not an arithmetic expression.
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1625)
at com.sap.sapchat.jpa.entities.User.getAll(User.java:75)
at com.sap.sapchat.jpa.entities.InitDatabase.main(InitDatabase.java:64)
Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Syntax error parsing [SELECT * FROM gomobile.user u].
[38, 38] A select statement must have a FROM clause.
[7, 7] The left expression is missing from the arithmetic expression.
[9, 38] 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)
... 3 more
당신이 당신의 더비 데이터베이스에 대해 대화 형으로 그냥 한 SELECT 문을 실행하려고 유무 : JPA에 네이티브 SQL을 사용하는 방법에 대한 예를 들어
는링크? 또한 FULL Derby 예외는 무엇입니까? http://wiki.apache.org/db-derby/UnwindExceptionChain –
@BryanPendleton 'SQL 예외'가 없습니다. 나는'IllegalArgumentException'을 얻는다. 위의 쿼리를 JDBC를 통해 실행하려고하면 오류가 발생합니다. 나는'SELECT * FROM gomobile.user'을 사용했습니다. 내 스레드를 업데이 트합니다. – Niklas