title: Hibernate: org.hibernate.hql.ast.QuerySyntaxException: unexpected token
body: <p>I am using Hibernate and I have this query:</p>
  
  <pre><code>List&lt;Person&gt; list = sess.createQuery("from Person").list();
  </code></pre>
  
  <p>With this statement, I get all persons from the database.
  But now, I only want some persons.</p>
  
  <p>My database scheme:</p>
  
  <p>Project &lt;- Project_Person -> Person</p>
  
  <p>So I only want Persons which are a member of a project.</p>
  
  <p>With the SQL statement on the database I get the desired result:</p>
  
  <pre><code>select * from Person inner join Project_Person 
      on person_id = id 
      where project_id = 1;
  </code></pre>
  
  <p>So I thought, I can write this with Hibernate:</p>
  
  <pre><code>List&lt;Person&gt; list = 
      sess.createQuery(
          "from Person inner join Project_Person
               on person_id = id 
               where project_id = "+projectId).list();
  </code></pre>
  
  <p>But here I get an error:</p>
  
  <pre><code>SERVE: Servlet.service() for servlet myproject3 threw exception
  org.hibernate.hql.ast.QuerySyntaxException: unexpected token: on near line 1, column 65 [from com.mydomain.myproject.domain.Person inner join Project_Person on person_id = id where project_id = 1]
   at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
   at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
   at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:82)
   at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:284)
   at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:182)
   at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
   at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:101)
   at org.hibernate.engine.query.HQLQueryPlan.&lt;init&gt;(HQLQueryPlan.java:80)
   at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:124)
   at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
   at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
   at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1770)
   at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:344)
   at $Proxy26.createQuery(Unknown Source)
   ...
  </code></pre>
  
  <p>Does anyone has an idea what's wrong here?</p>
  
  <p>Best Regards.</p>
  
  <p>New Error:</p>
  
  <pre><code>SERVE: Servlet.service() for servlet myproject3 threw exception
  org.hibernate.QueryException: could not resolve property: project of: com.mydomain.myproject.domain.Person [from com.mydomain.myproject.domain.Person p where p.project.id = :id]
  </code></pre>
  
  <p>n:m relation:</p>
  
  <pre><code>@ManyToMany(cascade = CascadeType.ALL)
  @JoinTable(name = "Project_Person",
      joinColumns = {@JoinColumn(name="project_id", referencedColumnName="id")},
      inverseJoinColumns = {@JoinColumn(name="person_id", referencedColumnName="id")}
  )
  private Set&lt;Person&gt; persons = new HashSet&lt;Person&gt;();
  
  
  @ManyToMany(mappedBy="persons")
  private Set&lt;Project&gt; projects = new HashSet&lt;Project&gt;();
  </code></pre>
  
  <p><strong>Full Error</strong></p>
  
  <pre><code>Hibernate: select project0_.id as id1_, project0_.createDate as create2_1_, project0_.description as descript3_1_, project0_.name as name1_ from Project project0_ where project0_.id=1
  Hibernate: select person0_.id as id0_0_, project2_.id as id1_1_, person0_.email as email0_0_, person0_.firstName as firstName0_0_, person0_.lastName as lastName0_0_, project2_.createDate as create2_1_1_, project2_.description as descript3_1_1_, project2_.name as name1_1_ from Person person0_ inner join Project_Person projects1_ on person0_.id=projects1_.person_id inner join Project project2_ on projects1_.project_id=project2_.id where project2_.id=?
  15.12.2010 16:42:26 org.apache.catalina.core.ApplicationDispatcher invoke
  SERVE: Servlet.service() for servlet myproject3 threw exception
  java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.mydomain.myproject.domain.Person
  </code></pre>