Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] The state field path 'a.id' cannot be resolved to a valid type

Hi,

Couple questions:

 1- Can you post the content of the UserCount entity?
 2- Does the error still occur if you comment out the multitenancy on UserCount?

Cheers,
Guy

On 05/11/2012 3:29 AM, Developer Account wrote:
hi guys,

i am using eclipselink 2.4.1 and sun-glassfish 3.1.2 on my enterprise application
i updated sun-glassfish modules with org.eclipse.persistence.* jars

i am trying to implement TABLE_PER_TENANT multitenant type and i have multi-tenant-pu defined in persistence.xml like

<persistence-unit name="multi-tenant-pu" transaction-type="RESOURCE_LOCAL">
    <properties>
      <property name="eclipselink.logging.level" value="ALL"/>
      <property name="eclipselink.weaving" value="static"/>
      <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"></property>
      <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/test"></property>
      <property name="javax.persistence.jdbc.user" value="postgres"></property>
      <property name="javax.persistence.jdbc.password" value=" "></property>
      <property name="eclipselink.tenant-id" value="public"/>
    </properties>
     <class>com.company.project.persistence.model.test.UserCount</class>

</persistence-unit>

and model class like

@Entity
@Cache(type=CacheType.WEAK,size=1,expiry=1000)
@Table(name = "users")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type= TenantTableDiscriminatorType.SCHEMA, contextProperty= "eclipselink.tenant-id")
@NamedQueries({
    @NamedQuery(name = "UserCount.findAll",
        query = "SELECT a FROM UserCount a ORDER BY a.id DESC")       
})
public class
UserCount implements Serializable {
....

and i create the query in my @Stateless class like

@Stateless
@Local
@TransactionAttribute(value = TransactionAttributeType.REQUIRED)
public class UserCountController {
   
    @PersistenceUnit(unitName="multi-tenant-pu")
    protected EntityManagerFactory emf;
   
    public String getUserCount() {
        EntityManager em = null;
        EntityTransaction tx = null;
        int userCount = 0;                   
       
        Query query;
        try {
            HashMap properties = new HashMap();
            properties.put(EntityManagerProperties.MULTITENANT_PROPERTY_DEFAULT, "tenant1");
           
            em = emf.createEntityManager(properties);
            tx = em.getTransaction();           
            tx.begin();
           
            query = em.createNamedQuery("UserCount.findAll");
            query.setMaxResults(1);
           
            int result = ((UserCount)(query.getSingleResult())).getCount();
           
            userCount = result;
        } catch (Exception ex) {
            tx.rollback();
            System.out.println(ex.toString());
        } finally {
            if (em != null && em.isOpen()) {
                em.close();
            }
        }
       
        return String.valueOf(userCount);
    }
}



When sun-glassfish is deploying the persistence-unit it throws this weird error:

Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [syslog] failed. Close all factories for this PersistenceUnit.
Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [SELECT a FROM UserCount a ORDER BY a.id DESC].
[37, 41] The state field path 'a.id' cannot be resolved to a valid type.
    at org.eclipse.persistence.exceptions.EntityManagerSetupException.deployFailed(EntityManagerSetupException.java:229)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createDeployFailedPersistenceException(EntityManagerSetupImpl.java:616)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:596)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:186)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:278)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:304)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:282)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.loadPU(PersistenceUnitLoader.java:211)
    at org.glassfish.persistence.jpa.PersistenceUnitLoader.<init>(PersistenceUnitLoader.java:120)
    at org.glassfish.persistence.jpa.JPADeployer$1.visitPUD(JPADeployer.java:224)
    at org.glassfish.persistence.jpa.JPADeployer$PersistenceUnitDescriptorIterator.iteratePUDs(JPADeployer.java:495)
    at org.glassfish.persistence.jpa.JPADeployer.createEMFs(JPADeployer.java:233)
    at org.glassfish.persistence.jpa.JPADeployer.prepare(JPADeployer.java:168)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.prepareModule(ApplicationLifecycle.java:871)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:410)
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291)
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259)
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:461)
    at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:212)
    at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179)
    at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
    at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
    at java.lang.Thread.run(Thread.java:679)


any help would be much appreciated

thanks in advance.

Justin


_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users

--

Oracle
Guy Pelletier

ORACLE Canada, 45 O'Connor Street Suite 400 Ottawa, Ontario Canada K1P 1A4

Green
            Oracle Oracle is committed to developing practices and products that help protect the environment


Back to the top