Search code examples
eclipselinkjpqlweblogic12c

EclipseLink includes all fields of entity bean in generated sql


I am using EclipseLink 2.3.x with WebLogic 12c. This is the JQL:

Select o from PR_GL_CA_ACCOUNT o

which generated following error stack:

<[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <2e88ae6781d171fa:-a29df4f:13f38b20f5a:-8000-0000000000000002> <1371045798327> <2013-06-12 19:03:18.311--UnitOfWork(271275142)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException


Internal Exception: com.ibm.db2.jcc.am.io: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703, SQLERRMC=DISPLAYGLMAPCODE, DRIVER=3.57.82
Error Code: -206
Call: SELECT PCA_GLACCODE, POR_ORGACODE, DISPLAYGLMAPCODE, PCA_FCALLOWED, PCA_GLACACTIVE, PCA_GLACBGTLEVE, PCA_GLACCREATION, PCA_GLACDESC, PCA_GLACDRCRBAL, PCA_GLACEFFECFROM, PCA_GLACEFFECUPTO, PCA_GLACLEVEL, PCA_GLACMAPCODE, PCA_GLACOPITEM, PCA_GLACREVAL, PCA_GLACSBLGR, PCA_GLACSHORT, PCA_GLACTYPE, PCC_ACTGCODE, PCR_CURRCODE, PCT_ACNTCODE, PSH_SCHDCODE, PSY_SYSTCODE FROM PR_GL_CA_ACCOUNT
Query: ReadAllQuery(name="ChartOfAccount.findAllTransactionLevelAccount" referenceClass=ChartOfAccount sql="SELECT PCA_GLACCODE, POR_ORGACODE, DISPLAYGLMAPCODE, PCA_FCALLOWED, PCA_GLACACTIVE, PCA_GLACBGTLEVE, PCA_GLACCREATION, PCA_GLACDESC, PCA_GLACDRCRBAL, PCA_GLACEFFECFROM, PCA_GLACEFFECUPTO, PCA_GLACLEVEL, PCA_GLACMAPCODE, PCA_GLACOPITEM, PCA_GLACREVAL, PCA_GLACSBLGR, PCA_GLACSHORT, PCA_GLACTYPE, PCC_ACTGCODE, PCR_CURRCODE, PCT_ACNTCODE, PSH_SCHDCODE, PSY_SYSTCODE FROM PR_GL_CA_ACCOUNT")>
#### <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <2e88ae6781d171fa:-a29df4f:13f38b20f5a:-8000-0000000000000002> <1371045798561> weblogic.application.ModuleException: Exception starting module: EJBModule(HelperEJB.jar)


Unable to deploy EJB: ListerInformationDto from HelperEJB.jar:

Singleton ListerInformationDto(Application: EarContent, EJBComponent: HelperEJB.jar) failed to initialize.
at weblogic.ejb.container.deployer.EJBModule.start(EJBModule.java:592) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:214) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:213) at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:111) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:125) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:214) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:25) at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:730) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:192) at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:369) at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52) at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31) at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170) at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:187) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:95) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused By: weblogic.ejb.container.InternalException: Transaction marked rollback or not expected transaction status: 1 at weblogic.ejb.container.manager.SingletonSessionManager.postCallback(SingletonSessionManager.java:464) at weblogic.ejb.container.manager.SingletonSessionManager.constructAndInitBean(SingletonSessionManager.java:379) at weblogic.ejb.container.manager.SingletonSessionManager.access$300(SingletonSessionManager.java:63) at weblogic.ejb.container.manager.SingletonSessionManager$SingletonLifecycleManager.doActualInit(SingletonSessionManager.java:798) at weblogic.ejb.container.manager.SingletonSessionManager$SingletonLifecycleManager.initInternal(SingletonSessionManager.java:744) at weblogic.ejb.container.manager.SingletonSessionManager$SingletonLifecycleManager.init(SingletonSessionManager.java:632) at weblogic.ejb.container.manager.SingletonSessionManager.init(SingletonSessionManager.java:281) at weblogic.ejb.container.manager.SingletonSessionManager.perhapsInit(SingletonSessionManager.java:276) at weblogic.ejb.container.deployer.EJBDeployer.initializeBeans(EJBDeployer.java:1280) at weblogic.ejb.container.deployer.EJBDeployer.start(EJBDeployer.java:1170) at weblogic.ejb.container.deployer.EJBModule.start(EJBModule.java:590) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:214) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:213) at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:111) at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:125) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:214) at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:70) at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:25) at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:730) at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:36) at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:258) at weblogic.application.internal.EarDeployment.activate(EarDeployment.java:61) at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:165) at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79) at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:192) at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:369) at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:52) at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200) at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:31) at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240) at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:170) at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:124) at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:187) at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:95) at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)


It shows that DISPLAYGLMAPCODE is unknown column. After looking at table/code, I found that there is no column in table with same name but there is a private boolean field in entity class with same name without any annotation.

private boolean displayGLMapCode = false;


Solution

  • The solution to problem is that we need to annotate this field with @Transient.