[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Invalid query key [***] in expression

Hi Guy,

i filed a bug (https://bugs.eclipse.org/bugs/show_bug.cgi?id=394524)

i can't use EMF level multitenancy because there is gonna be quite a lot of users creating a new EMF everytime the system talks to the DB and EMF creation is quite expensive in performance.

-Justin

On 12-11-16 11:25 AM, Guy Pelletier wrote:
Hi Justin,

This looks to be a bug, can you enter one please?

It would appear that while processing the queries relationships, the mapping for report is being retrieved from an uninitialized descriptor (when it should be asking for it from the initialized EM level multitenant one). The only workaround right now would be to use EMF level multitenancy.

Cheers,
Guy

On 16/11/2012 1:56 PM, Justin Joe wrote:
Hi Tom,

when i comment out these two lines from CreatedReport entity :
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type= TenantTableDiscriminatorType.SCHEMA, contextProperty= "eclipselink.tenant-id")


 i get this error:

remote failure: Error occurred during deployment: Exception while preparing the app : Exception [EclipseLink-28019] (Eclipse Persistence Services - 2.5.0.v20121110-3770ab2): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Deployment of PersistenceUnit [multi-tenant-pu] failed. Close all factories for this PersistenceUnit.
Internal Exception: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.0.v20121110-3770ab2): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Problem compiling [
SELECT c FROM CreatedReport c where c.report.reportType.id = :typeId].
[64, 86] The state field path 'c.report.reportType.id' cannot be resolved to a valid type.. Please see server.log for more details.
Command deploy failed.


-Justin

On 11/16/2012 5:25 AM, Tom Ware wrote:
Does the same query work without the @Multitenant(MultitenantType.TABLE_PER_TENANT) annotations?

On 16/11/2012 3:53 AM, Developer Account wrote:
Hi Tom,

i tried adding the new property but nothing changed

here is my persistence-unit

/<persistence-unit name="multi-tenant-pu" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
     <class>...CreatedReport</class>
     <class>..Report</class>
     .....
     <properties>//
       <property name="eclipselink.logging.file" value="/tmp/eclipselink.log"/>
       <property name="eclipselink.logging.level" value="ALL"/>
       <property name="eclipselink.jpql.parser"
value="org.eclipse.persistence.queries.ANTLRQueryBuilder" />
       <property name="javax.persistence.jdbc.driver"
value="org.postgresql.Driver"></property>
       <property name="javax.persistence.jdbc.url"
value="jdbc:postgresql://localhost:5432/DB"></property>
       <property name="javax.persistence.jdbc.user" value="postgres"></property>
       <property name="javax.persistence.jdbc.password" value="xxx"></property>
     </properties>
   </persistence-unit>/

-Justin

On 12-11-15 05:06 AM, Tom Ware wrote:
Could you try to add the following persistence unit property:

eclipselink.jpql.parser=org.eclipse.persistence.queries.ANTLRQueryBuilder

On 15/11/2012 3:54 AM, Developer Account wrote:
Hi Tom,

/[#|2012-11-13T22:32:19.945-0800|INFO|glassfish3.1.2|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=21;_ThreadName=Thread-2;|Exception

[EclipseLink-6015] (Eclipse Persistence Services - 2.5.0.v20121110-3770ab2):
org.eclipse.persistence.exceptions.QueryException
Exception Description: *Invalid query key [report] in _expression_*.
Query: ReadAllQuery(name="CreatedReport.findAllByTypeId"
referenceClass=CreatedReport jpql="SELECT c FROM CreatedReport c where
c.report.reportType.id = :typeId")|#]

[#|2012-11-13T22:32:19.945-0800|INFO|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=21;_ThreadName=Thread-2;|PWC1412:

WebModule[null] ServletContext.log():null|#]

/
these are the only other stack traces, i thought it is a mapping issue.

it was working when i was using *sun-glassfish 3.0.1* and *eclipselink 2.3* with
a JTA persistence-unit,
all i changed was upgrading sun-glassfish, eclipselink and changing the
transaction-type to RESOURCE_LOCAL for multitenancy features so the transactions
are managed by the application not the container anymore and
I am using *EM level Table Per Tenant Multitenancy*

here is how i create the EntityManager

/private EntityManager getEntitymanager() {
         HashMap properties = new HashMap();
properties.put(EntityManagerProperties.*MULTITENANT_PROPERTY_DEFAULT*,
"tenant1");

         EntityManagerFactory emf =
PersistenceManagerEMF.getInstance().getEntityManagerFactory();
         // Persistence.createEntityManagerFactory("multi-tenant-pu");
         return emf.createEntityManager(properties);
}/

i thought there was some changes around parsing the @NamedQueries lately because
i think it wouldn't be deployed if the problem was sun-glassfish.

I get the error when this line is being executed
/Query query = em.createNamedQuery("CreatedReport.findAllByTypeId");
/

-Justin


On 12-11-14 04:24 AM, Tom Ware wrote:
Hi,

  Is there more to the stack trace?  I don't see any EclipseLink classes in
the stack.  In the absence of org.eclipse.persistence classes in the stack, I
think it is more likely the issue is somewhere else.

-Tom

On 14/11/2012 2:13 AM, Developer Account wrote:
Hi guys,

I am using the latest *eclipselink* nightly build (2.5.0 ...)
and am getting a *NullPointerException* when i try to run a @*NamedQuery*
which
joins more than one table

here is the question:

*_/SELECT c FROM CreatedReport c where c.report.reportType.id = :typeId/_**__*

and here are the POJOs

/@Entity
@Table(name = "created_report")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type= TenantTableDiscriminatorType.SCHEMA,
contextProperty= "eclipselink.tenant-id")
@NamedQueries({
     @NamedQuery(name = "///CreatedReport/.findAllByTypeId",
         query = "SELECT c FROM ///CreatedReport/ c where
c.report.reportType.id
= :typeId"),
})
public class *CreatedReport* implements Serializable {

     private static final long serialVersionUID = 1L;
     @Id
     @Basic(optional = false)
     @GeneratedValue(strategy=GenerationType.IDENTITY)
     @Column(name = "id")
     private Integer *id*;

     @Basic(optional = false)
     @Column(name = "date")
     @Temporal(TemporalType.TIMESTAMP)
     private Date *date*;

     @JoinColumn(name = "report_id", referencedColumnName = "id")
     @ManyToOne(optional = false)
     private Report *report*;

     ... getters and setters

}

@Entity
@Table(name = "report")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type= TenantTableDiscriminatorType.SCHEMA,
contextProperty= "eclipselink.tenant-id")
public class *Report* implements Serializable {

     private static final long serialVersionUID = 1L;
     @Id
     @Basic(optional = false)
     @GeneratedValue(strategy=GenerationType.IDENTITY)
     @Column(name = "id")
     private Integer *id*;

     @Column(name = "name")
     private String *name*;

     @XmlTransient
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "report")
     private List<CreatedReport> *createdReports*;

     @XmlTransient
     @JoinColumn(name = "report_type_id", referencedColumnName = "id")
     @ManyToOne(optional = false)
     private ReportType *reportType*;

     ... getters and setters

}////

@Entity
@Table(name = "report_type")
@Multitenant(MultitenantType.TABLE_PER_TENANT)
@TenantTableDiscriminator(type= TenantTableDiscriminatorType.SCHEMA,
contextProperty= "eclipselink.tenant-id")
public class *ReportType* implements Serializable {
     private static final long serialVersionUID = 1L;
     @Id
     @Basic(optional = false)
     @GeneratedValue(strategy=GenerationType.IDENTITY)
     @Column(name = "id")
     private Integer *id*;

     @Basic(optional = false)
     @Column(name = "name")
     private String *name*;

     @OneToMany(cascade = CascadeType.ALL, mappedBy = "reportType")
     private List<Report> *reportCollection*;

     @OneToMany(cascade = CascadeType.ALL, mappedBy = "reportType")
     private List<ReportArgument> *reportArguments*;

     ... getters and setters

}

/and here is the EJB /call//

public List<CreatedReport> findAllByTypeId(Integer typeId) {
         List<///CreatedReport/> reportsByTypeId = null;
         try {
             em = getEntitymanager();    // create the tenant based EM
             tx = em.getTransaction();
             tx.begin();

             Query query =
em.createNamedQuery("//*/CreatedReport/**.findAllByTypeId*");

             query.setParameter("typeId", typeId);

             reportsByTypeId = (List<///CreatedReport/>)
query.getResultList();
         } catch(Exception ex) {
             tx.rollback();
             System.out.println(ex.toString());
         } finally {
             if (em != null && em.isOpen()) {
                 em.close();
             }
         }

         return reportsByTypeId;
     }

/when it is trying to create the query, it gets this error :/

java.lang.NullPointerException
         at java.util.Collections.reverse(Collections.java:381)
         at
com.sun.rave.web.ui.appbase.servlet.LifecycleListener.fireInit(LifecycleListener.java:633)


         at
com.sun.rave.web.ui.appbase.servlet.LifecycleListener.attributeAdded(LifecycleListener.java:483)


         at
org.apache.catalina.connector.Request.setAttribute(Request.java:1716)
         at
org.apache.catalina.connector.RequestFacade.setAttribute(RequestFacade.java:570)

         at
javax.servlet.ServletRequestWrapper.setAttribute(ServletRequestWrapper.java:283)

         at com.sun.faces.context.RequestMap.put(RequestMap.java:101)
         at com.sun.faces.context.RequestMap.put(RequestMap.java:54)
         at
com.sun.faces.mgbean.BeanManager$ScopeManager$RequestScopeHandler.handle(BeanManager.java:527)


         at
com.sun.faces.mgbean.BeanManager$ScopeManager.pushToScope(BeanManager.java:458)

         at
com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:410)
         at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
         at
com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)


         at
com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)

         at
com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)


         at
com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)


         at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103)
         at
com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:224)
         at
com.sun.faces.application.ValueBindingValueExpressionAdapter.getValue(ValueBindingValueExpressionAdapter.java:113)


         at
com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.pageBean(ViewHandlerImpl.java:710)


         at
com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.pageBean(ViewHandlerImpl.java:685)


         at
com.sun.rave.web.ui.appbase.faces.ViewHandlerImpl.renderView(ViewHandlerImpl.java:284)


         at
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)


         at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
         at
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
         at
com.sun.faces.extensions.avatar.lifecycle.PartialTraversalLifecycle.render(PartialTraversalLifecycle.java:106)


         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
         at
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:267)
         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.jasig.cas.client.util.AssertionThreadLocalFilter.doFilter(AssertionThreadLocalFilter.java:40)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:50)


         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.jasig.cas.client.validation.AbstractTicketValidationFilter.doFilter(AbstractTicketValidationFilter.java:167)


         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.jasig.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:104)


         at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)


         at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)


         at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)


         at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)


         at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
         at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
         at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
         at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
         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)


/could this be a bug in eclipselink or am i missing something ?/

/thanks in advance

Justin/
/


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

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



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

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



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

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



_______________________________________________
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



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

GIF image

GIF image