簡體   English   中英

JPA查詢語法問題還是什么? JPA SELECT NEW語法問題?

[英]JPA query syntax issue or what ?! JPA SELECT NEW syntax issue?

我有一個TextHistory實體對象,然后有這個JPA查詢。

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

在實體對象中,我提供了相應的構造函數。

我正在嘗試在Payara 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.          ]]

關於您實際上為什么要使用SELECT NEW語法的任何提示? 這種語法通常用於(罕見的)情況下,您想從一個實體中選擇字段並使用這些字段的值構造另一個對象。

在您的情況下,您將構建從中選擇的同一實體。 通常這是通過select e from SomeEntity e完成的。 (實際上,與SQL相反,在JPQL中,只要從單個實體中進行選擇, select子句是可選的。因此, from SomeEntity e僅選擇整個表, from SomeEntity e where e <whatever>選擇from SomeEntity e where e <whatever>選擇所有<whatever>記錄。)

如果實體具有一些重量級屬性(例如@Lob )或@ManyToOne關聯,而您不想一開始就對其進行加載,則執行此操作的正確方法是使它們延遲加載。 對於LOB,這通過@Basic(fetchType = LAZY) ,對於關聯,則通過@ManyToOne(fetchType = LAZY) 請注意,對於@ManyToMany@OneToMany延遲加載始終是默認設置。

我的印象是您正在嘗試以“ SQL方式”進行JPA。 扎實的SQL知識對於正確使用JPA是必不可少的,但是您必須始終從關系到面向對象的角度進行這種“范式轉換”,以便按照預期的方式進行操作。

BTW,關於

我什至不知道什么是Eclipselink

這幾乎說明了一切:-) JPA是一種標准化的Java API-它定義了事情應該如何工作,沒有更多,也不少。 它實際上並沒有做真正的工作-這留給了特定的JPA實現,也就是持久性提供程序。 有很多JPA實現,最突出的是Hibernate和Eclipselink。 每個Java EE應用程序服務器都必須包含JPA持久性提供程序,並且看來您的服務器隨附Eclipselink。 當Oracle將其專有的名為TopLink的JPA實現捐贈給Eclipse Foundation時,Eclipselink便應運而生。

更新:我做了更多的研究,看來您出錯的原因很平凡: SELECT NEW語法要求您使用構造函數的完全合格名稱,即包括程序包名稱。 這是因為您可以在想要的任何POJO類中select new ,而不要求該類是JPA實體。 相反, from子句使用簡單名稱,因為那里僅允許@Entity類(JPA在部署時枚舉和解析)。

為什么不使用完全限定的名稱會導致Eclipselink代碼中出現NullPointer,這是另一個故事-似乎像Eclipselink中的錯誤。

==>這會導致一個問題,那就是哪個更好, select new加載還是延遲加載。 與往常一樣,這取決於您的用例。 無論對象如何進入內存,為延遲加載的字段添加注釋將始終受到重視。 例如,使用EnitytManager.find()總是返回實體的完整實例,而不能在其中使用自定義構造函數。 但是,當然可以使用對字段的注釋。 通過關聯訪問實體時也是如此-如果A包含對B的引用,並且您調用A.getB()則會根據其注釋初始化B的實例。

如果您故意要偏離默認值,則使用select new是一項一次性技術。

不熟悉這種SELECT NEW語法,但是可以看到您正在使用Eclipselink( http://wiki.eclipse.org/EclipseLink/Examples/JPA

大約一年前,我陷入了一個問題,到最后,它似乎是一個Eclipselink錯誤。 值得檢查一下( https://bugs.eclipse.org/bugs/query.cgi ),也許它是已知的,或者您只是發現了它。

另一個猜測: org.eclipse.persistence.exceptions.EntityManagerSetupException可能導致EntityManager的設置不正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM