2017-08-15 79 views
0

我有一个TextHistory实体对象,然后我有这个JPA查询。JPA查询语法问题或什么? JPA SELECT NEW语法问题?

SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i")

在该实体对象我所提供的对应的构造。

我想似鲭水狼牙鱼4.1下部署我的应用程序,但我在部署时得到此异常:

Error occurred during deployment: Exception while deploying the app  
[app-name] : Exception [EclipseLink-28019] 
(Eclipse Persistence Services - 2.6.2.qualifier): 
org.eclipse.persistence.exceptions.EntityManagerSetupException 
Exception Description: 
Deployment of PersistenceUnit [unit-name] failed. 
Close all factories for this PersistenceUnit. Internal Exception: 
Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.qualifier): 
org.eclipse.persistence.exceptions.JPQLException 
Exception Description: Internal problem encountered while compiling 
[SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i]. 
Internal Exception: java.lang.NullPointerException. 
Please see server.log for more details. 

我想我JPA查询语法是正确的。 我一直在为此奋斗了几个小时。

什么问题?有任何想法吗?

在server.log中,我看到这个异常。

 [2017-08-15T21:32:24.546+0200] [Payara 4.1] [INFO] [] [org.eclipse.persistence.session./file:/D:/Work/TSSB_DEV_ENV_MASTER/domains/tssb_ms_gf4_domain_srm_tsbg/applications/tsbgam-application-2017-T3-SNAPSHOT/tsbgam-business_jar/_tsms_tsbg.connection] [tid: _ThreadID=154 _ThreadName=admin-listener(7)] [timeMillis: 1502825544546] [levelValue: 800] [[ 
      /file:/D:/Work/TSSB_DEV_ENV_MASTER/domains/tssb_ms_gf4_domain_srm_tsbg/applications/tsbgam-application-2017-T3-SNAPSHOT/tsbgam-business_jar/_tsms_tsbg logout successful]] 

     [2017-08-15T21:32:24.546+0200] [Payara 4.1] [SEVERE] [] [org.eclipse.persistence.session./file:/D:/Work/TSSB_DEV_ENV_MASTER/domains/tssb_ms_gf4_domain_srm_tsbg/applications/tsbgam-application-2017-T3-SNAPSHOT/tsbgam-business_jar/_tsms_tsbg.ejb] [tid: _ThreadID=154 _ThreadName=admin-listener(7)] [timeMillis: 1502825544546] [levelValue: 1000] [[ 

     Local Exception Stack: 
     Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.JPQLException 
     Exception Description: Internal problem encountered while compiling [SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i]. 
     Internal Exception: java.lang.NullPointerException 
      at org.eclipse.persistence.internal.jpa.jpql.HermesParser.buildUnexpectedException(HermesParser.java:207) 
      at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:296) 
      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.JPAQuery.processJPQLQuery(JPAQuery.java:223) 
      at org.eclipse.persistence.internal.jpa.JPAQuery.prepare(JPAQuery.java:184) 
      at org.eclipse.persistence.queries.DatabaseQuery.prepareInternal(DatabaseQuery.java:624) 
      at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQuery(AbstractSession.java:4366) 
      at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQueries(AbstractSession.java:4326) 
      at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:598) 
      at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:818) 
      at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:762) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:265) 
      at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:731) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) 
      at org.glassfish.persistence.jpa.JPADeployer$2.visitPUD(JPADeployer.java:451) 
      at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510) 
      at org.glassfish.persistence.jpa.JPADeployer.iterateInitializedPUsAtApplicationPrepare(JPADeployer.java:492) 
      at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:395) 
      at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131) 
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:487) 
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
      at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:487) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:360) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:360) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:253) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:231) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:275) 
      at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:136) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:498) 
      at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
      at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
      at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) 
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
      at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 
      at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 
      at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:384) 
      at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:316) 
      at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:179) 
      at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
      at java.lang.Thread.run(Thread.java:745) 
     Caused by: java.lang.NullPointerException 
      at org.eclipse.persistence.queries.ReportQuery.beginAddingConstructorArguments(ReportQuery.java:558) 
      at org.eclipse.persistence.internal.jpa.jpql.ReportItemBuilder.visit(ReportItemBuilder.java:263) 
      at org.eclipse.persistence.jpa.jpql.parser.ConstructorExpression.accept(ConstructorExpression.java:84) 
      at org.eclipse.persistence.internal.jpa.jpql.ReportItemBuilder.visitAbstractSelectClause(ReportItemBuilder.java:695) 
      at org.eclipse.persistence.internal.jpa.jpql.ReportItemBuilder.visit(ReportItemBuilder.java:545) 
      at org.eclipse.persistence.jpa.jpql.parser.SelectClause.accept(SelectClause.java:42) 
      at org.eclipse.persistence.internal.jpa.jpql.ReportQueryVisitor.visitAbstractSelectClause(ReportQueryVisitor.java:82) 
      at org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visit(AbstractObjectLevelReadQueryVisitor.java:173) 
      at org.eclipse.persistence.jpa.jpql.parser.SelectClause.accept(SelectClause.java:42) 
      at org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visitAbstractSelectStatement(AbstractObjectLevelReadQueryVisitor.java:327) 
      at org.eclipse.persistence.internal.jpa.jpql.ReportQueryVisitor.visitAbstractSelectStatement(ReportQueryVisitor.java:92) 
      at org.eclipse.persistence.internal.jpa.jpql.AbstractObjectLevelReadQueryVisitor.visit(AbstractObjectLevelReadQueryVisitor.java:183) 
      at org.eclipse.persistence.jpa.jpql.parser.SelectStatement.accept(SelectStatement.java:101) 
      at org.eclipse.persistence.internal.jpa.jpql.HermesParser$DatabaseQueryVisitor.visit(HermesParser.java:438) 
      at org.eclipse.persistence.jpa.jpql.parser.SelectStatement.accept(SelectStatement.java:101) 
      at org.eclipse.persistence.internal.jpa.jpql.HermesParser$DatabaseQueryVisitor.visit(HermesParser.java:418) 
      at org.eclipse.persistence.jpa.jpql.parser.JPQLExpression.accept(JPQLExpression.java:135) 
      at org.eclipse.persistence.internal.jpa.jpql.HermesParser.populateQueryImp(HermesParser.java:282) 
      ... 85 more 
     ]] 

     [2017-08-15T21:32:24.548+0200] [Payara 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=154 _ThreadName=admin-listener(7)] [timeMillis: 1502825544548] [levelValue: 1000] [[ 
      Exception while deploying the app [tsbgam-application-2017-T3-SNAPSHOT]]] 

     [2017-08-15T21:32:24.548+0200] [Payara 4.1] [SEVERE] [NCLS-CORE-00026] [javax.enterprise.system.core] [tid: _ThreadID=154 _ThreadName=admin-listener(7)] [timeMillis: 1502825544548] [levelValue: 1000] [[ 
      Exception during lifecycle processing 
     org.glassfish.deployment.common.DeploymentException: Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.EntityManagerSetupException 
     Exception Description: Deployment of PersistenceUnit [tsms_tsbg] failed. Close all factories for this PersistenceUnit. 
     Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.JPQLException 
     Exception Description: Internal problem encountered while compiling [SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i]. 
     Internal Exception: java.lang.NullPointerException 
      at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:869) 
      at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:809) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) 
      at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) 
      at org.glassfish.persistence.jpa.JPADeployer$2.visitPUD(JPADeployer.java:451) 
      at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:510) 
      at org.glassfish.persistence.jpa.JPADeployer.iterateInitializedPUsAtApplicationPrepare(JPADeployer.java:492) 
      at org.glassfish.persistence.jpa.JPADeployer.event(JPADeployer.java:395) 
      at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:131) 
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:487) 
      at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
      at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:487) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:360) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:360) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846) 
      at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:253) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:231) 
      at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:275) 
      at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:136) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:498) 
      at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
      at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:160) 
      at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
      at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 
      at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:326) 
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) 
      at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:315) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:297) 
      at org.glassfish.jersey.internal.Errors.process(Errors.java:267) 
      at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) 
      at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305) 
      at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154) 
      at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:384) 
      at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:316) 
      at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:179) 
      at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) 
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) 
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) 
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) 
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) 
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) 
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) 
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) 
      at java.lang.Thread.run(Thread.java:745) 
     ]] 

     [2017-08-15T21:32:24.562+0200] [Payara 4.1] [SEVERE] [] [javax.enterprise.system.core] [tid: _ThreadID=154 _ThreadName=admin-listener(7)] [timeMillis: 1502825544562] [levelValue: 1000] [[ 
      Exception while deploying the app [tsbgam-application-2017-T3-SNAPSHOT] : Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.EntityManagerSetupException 
     Exception Description: Deployment of PersistenceUnit [tsms_tsbg] failed. Close all factories for this PersistenceUnit. 
     Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.JPQLException 
     Exception Description: Internal problem encountered while compiling [SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i]. 
     Internal Exception: java.lang.NullPointerException]] 

     [2017-08-15T21:32:24.663+0200] [Payara 4.1] [INFO] [] [org.glassfish.admingui] [tid: _ThreadID=47 _ThreadName=admin-listener(5)] [timeMillis: 1502825544663] [levelValue: 800] [[ 
      Exception Occurred :Error occurred during deployment: Exception while deploying the app [tsbgam-application-2017-T3-SNAPSHOT] : Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.EntityManagerSetupException 
     Exception Description: Deployment of PersistenceUnit [tsms_tsbg] failed. Close all factories for this PersistenceUnit. 
     Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.6.2.qualifier): org.eclipse.persistence.exceptions.JPQLException 
     Exception Description: Internal problem encountered while compiling [SELECT NEW TextHistory(i.id, i.fileName, i.importDate) FROM TextHistory i]. 
     Internal Exception: java.lang.NullPointerException. Please see server.log for more details.   ]] 
+0

由于它是*内部* NPE,而*编译*,这听起来不仅仅是一个简单的用户错误。 – Kayaman

+0

@Kayaman如果这么简单,根源或解决方案是什么? –

+0

你可以检查server.log,并从那里添加例外到这个问题吗? – Mike

回答

0

不熟悉这个SELECT NEW语法,但可以看到你正在使用的EclipseLink(http://wiki.eclipse.org/EclipseLink/Examples/JPA

大约一年前,我被卡住了一个问题,在这一天结束它似乎是一个Eclipselink错误。值得检查的(https://bugs.eclipse.org/bugs/query.cgi),也许它是已知的,或者你刚刚找到它。

另一个猜测:org.eclipse.persistence.exceptions.EntityManagerSetupException 可能会导致EntityManager的设置不正确。

+0

谢谢,你能找到我更多的细节吗?像链接或其他... –

+0

顺便说一句,我什至不知道什么Eclipselink是。我正在使用Payara以及与之捆绑在一起的任何东西。它支持JPA,我认为我的查询语法是OK的。 –

+0

@ peter.petrov我编辑了我的答案 – Mykola

2

为什么你真的想要使用SELECT NEW语法的任何提示? 此语法主要用于(罕见)情况下,您希望从一个实体中选择字段,并使用这些字段的值构造一个不同的对象。

在你的情况下,你正在构建你正在选择的同一个实体。这通常按照select e from SomeEntity e完成。 (实际上,相对于SQL,在JPQL的select子句是可选的,只要你是从一个单一的实体选择。所以from SomeEntity e只是选择整个表,并from SomeEntity e where e <whatever>选择所有<whatever>记录。)

如果实体有一些重要属性(如@Lob s)或@ManyToOne关联,您最初不想加载,正确的方法是让它们延迟加载。对于LOB,这通过0​​完成,并通过@ManyToOne(fetchType = LAZY)进行关联。请注意,对于@ManyToMany@OneToMany无论如何,延迟加载是默认设置。

我的印象是您正在尝试执行JPA“SQL方式”。坚实的SQL知识是正确使用JPA的必备条件,但您需要始终从关系到面向对象的角度进行“范式切换”,以便按照预期的方式完成任务。

顺便说一句,关于

我甚至不知道的EclipseLink是什么

这几乎说明了一切:-) JPA是一个标准化的Java API - 它定义事情应该如何工作,不多,不少。它实际上并没有做真正的工作 - 这留给特定的JPA实现,也就是持久性提供者。在那里有一堆JPA实现,最突出的是Hibernate和Eclipselink。每个Java EE应用程序服务器都需要包含一个JPA持久性提供程序,并且您的服务器似乎与Eclipselink一起提供。 Eclipselink在Oracle向Eclipse基金会捐赠名为TopLink的专有JPA实现时诞生。

更新:我做了些研究,它似乎是你错误的原因是相当平凡:在SELECT NEW语法要求您使用构造的完全quialified名称,即包括包的名称。这是因为你可以将select new放到你想要的任何POJO类中,它不需要该类成为JPA实体。相反,from子句使用简单名称,因为只允许使用@Entity类(在部署时JPA枚举和解析)。

为什么不使用完全限定名称导致Eclipselink代码中的NullPointer是另一回事 - 看起来像Eclipselink中的一个错误。

==>这会导致问题哪一个更好,select new或延迟加载。一如既往,这取决于你的用例。无论对象如何进入内存,永远都会对注释字段进行延迟加载。例如,使用EnitytManager.find()总是返回一个完整的实体实例,使用不能在那里使用自定义的构造函数。但是字段上的注释当然适用。当通过关联访问实体时也是如此 - 如果A包含对B的引用,并且您拨打A.getB(),那么您将得到一个根据其注释初始化的B实例。

使用select new是一种一次性技巧,以防您故意偏离默认设置。

+0

我必须纠正自己,可选的'SELECT'子句是Hibernate的一个“特性”(或者一个bug,取决于你如何查看它),更确切地说是HQL-- Hibernate自己的查询语言。 JPQL主要基于HQL,但不一样。这个特殊的功能在JPQL和Eclipselink中是不标准的,“发生”不支持它。 – Mihail