2017-08-15 3 views
0

J'ai un objet entité TextHistory et j'ai cette requête JPA.Problème de syntaxe de requête JPA ou quoi?! JPA SELECT NOUVEAU problème de syntaxe?

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

Dans l'objet de l'entité que j'ai fourni le constructeur correspondant.

Je suis en train de déployer mon application sous Payara 4.1 mais je reçois cette exception au moment deploy:

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. 

Je pense que ma syntaxe de requête JPA est correcte. J'ai lutté avec cela pendant plusieurs heures maintenant.

Quel est le problème? Des idées?

Dans le fichier server.log, je vois cette exception.

 [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

Comme il s'agit d'un NPE * interne * lors de la * compilation *, cela ressemble plus à une simple erreur de l'utilisateur. – Kayaman

+0

@Kayaman Si c'est si simple, quelle est la cause ou la solution? –

+0

Pourriez-vous vérifier le server.log et ajouter les exceptions de là à la question s'il vous plaît? – Mike

Répondre

0

Vous n'êtes pas familier avec cette syntaxe SELECT NEW, mais peut voir que vous utilisez EclipseLink (http://wiki.eclipse.org/EclipseLink/Examples/JPA)

Il y a environ un an, je suis coincé avec un problème et à la fin de la journée, il semble y avoir un Eclipselink bug. Il vaut la peine de vérifier cela (https://bugs.eclipse.org/bugs/query.cgi), peut-être que c'est connu ou peut-être que vous venez de le trouver.

Une autre supposition: org.eclipse.persistence.exceptions.EntityManagerSetupException peut entraîner des paramètres incorrects d'EntityManager.

+0

Merci, pouvez-vous me trouver plus de détails à ce sujet? Comme un lien ou quelque chose ... –

+0

Btw, je ne sais même pas ce qu'est Eclipselink. J'utilise Payara et tout ce qui est livré avec. Il supporte JPA et je pense que ma syntaxe de requête est OK. –

+0

@ peter.petrov J'ai édité ma réponse – Mykola

2

Des indices sur pourquoi voulez-vous vraiment utiliser la syntaxe SELECT NEW? Cette syntaxe est principalement utilisée dans le cas (rare) où vous voulez sélectionner des champs d'une entité et construire un objet différent en utilisant les valeurs de ces champs.

Dans votre cas, vous construisez la même entité que vous sélectionnez. Ceci est habituellement fait comme select e from SomeEntity e. (En fait, contrairement à SQL, en JPQL la clause select est facultative tant que vous sélectionnez à partir d'une seule entité. Donc from SomeEntity e sélectionne simplement toute la table, et from SomeEntity e where e <whatever> sélectionne tous <whatever> enregistrements.)

Dans le cas où l'entité a quelques attributs lourds (comme @Lob s) ou @ManyToOne associations que vous ne voulez pas charger au départ, la bonne façon de le faire est de les faire paresseusement chargés. Pour les objets LOB, cela se fait via @Basic(fetchType = LAZY) et pour les associations via @ManyToOne(fetchType = LAZY). Notez que pour @ManyToMany et @OneToMany chargement paresseux est la valeur par défaut de toute façon. Mon impression est que vous essayez de faire JPA "la manière SQL". Une connaissance SQL solide est indispensable pour utiliser correctement JPA, mais vous devez toujours faire ce "changement de paradigme" de la perspective relationnelle à la perspective orientée objet afin de faire les choses comme ils le devraient.

BTW, en ce qui concerne

Je ne sais même pas ce que EclipseLink est

Cela dit à peu près tout :-) JPA est une API Java standard - il définit la façon dont les choses sont censées au travail, pas plus, pas moins.Il ne fait pas réellement le travail réel - ceci est laissé à l'implémentation JPA particulière, un fournisseur de persistance a.k.a. Il y a beaucoup d'implémentations JPA, la plus importante étant Hibernate et Eclipselink. Chaque serveur d'application Java EE doit inclure un fournisseur de persistance JPA, et il semble que votre serveur soit livré avec Eclipselink. Eclipselink a vu le jour lorsque Oracle a fait don de son implémentation JPA propriétaire TopLink à la Fondation Eclipse.

Mise à jour: J'ai fait un peu plus de recherche et il semble que la raison de votre erreur est assez banale: La syntaxe SELECT NEW vous oblige à utiliser le nom complet quialified du constructeur, à savoir notamment le nom du package. C'est parce que vous pouvez select new dans n'importe quelle classe POJO que vous voulez, il ne nécessite pas que la classe soit une entité JPA. En revanche, la clause from utilise des noms simples car seules les classes @Entity y sont autorisées (énumérées et analysées par JPA au moment du déploiement). Pourquoi ne pas utiliser un nom complet conduit à un NullPointer dans le code Eclipselink, est une autre histoire - semble être un bug dans Eclipselink.

==> Cela conduit à la question de savoir quel est le meilleur, select new ou chargement paresseux. Comme toujours, cela dépend de votre utilisation. Annoter les champs pour le chargement paresseux sera toujours honoré, peu importe comment les objets sont en mémoire. Par exemple, en utilisant EnitytManager.find() renvoie toujours une instance complète de l'entité, l'utilisation ne peut pas utiliser un constructeur personnalisé. Mais les annotations sur les champs s'appliquent bien sûr. Il en va de même lors de l'accès aux entités par association - si A contient une référence à B, et que vous appelez A.getB() vous obtenez une instance de B initialisée en fonction de ses annotations.

L'utilisation de select new est une technique unique dans le cas où vous souhaitez délibérément détourner de la valeur par défaut.

+0

Je dois me corriger, la clause optionnelle 'SELECT' est une" fonctionnalité "(ou un bug, selon la façon dont vous la voyez) d'Hibernate, plus précisément de HQL - La propre requête d'Hibernate la langue. JPQL est largement basé sur HQL, mais ce n'est pas la même chose. Cette fonctionnalité particulière n'est pas standardisée dans JPQL et Eclipselink "arrive" à ne pas le supporter. – Mihail