title: Syntax error parsing a trivial query with JPA
body: <p>I created the entity bean with netbeans wizard and am trying to get data from database. No matter what SQL query do I use,it doesn't work. I tried using named query that was created by wizard:</p>
  
  <pre><code>@NamedQuery(name = "Usr.findAll", query = "SELECT u FROM Usr u")
  </code></pre>
  
  <p>It returns:</p>
  
  <pre><code>Caused by: Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.JPQLException
  Exception Description: Syntax error parsing the query [Usr.findAll], line 1, column 0: unexpected token [Usr].
  </code></pre>
  
  <p>If I try; </p>
  
  <pre><code>SELECT uid FROM usr;
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>Caused by: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
  Exception Description: Syntax error parsing the query [SELECT uid FROM usr;], line 0, column -1: unexpected end of query.
  Internal Exception: MismatchedTokenException(-1!=78)
  </code></pre>
  
  <p>and even if I try :</p>
  
  <pre><code>SELECT * FROM usr
  </code></pre>
  
  <p>I get:</p>
  
  <pre><code>Caused by: Exception [EclipseLink-8025] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.JPQLException
  Exception Description: Syntax error parsing the query [SELECT * FROM usr], line 1, column 7: unexpected token [*].
  </code></pre>
  
  <p>My line for getting the data is:</p>
  
  <pre><code>@PersistenceContext
  EntityManager em;
  ....
  
  em=Persistence.createEntityManagerFactory("SchoolPU").createEntityManager();
  List users = em.createQuery("SELECT * FROM usr").getResultList();
  </code></pre>
  
  <p>Any one can help me with this trivial problem?</p>
  
  <p>The Usr entity class:</p>
  
  <pre><code>import java.io.Serializable;
  import javax.persistence.Basic;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.Id;
  import javax.persistence.Lob;
  import javax.persistence.NamedQueries;
  import javax.persistence.NamedQuery;
  import javax.persistence.Table;
  
  /**
   *
   * @author danizmax
   */
  @Entity
  @Table(name = "USR")
  @NamedQueries({
      @NamedQuery(name = "Usr.findAll", query = "SELECT u FROM Usr u"),
      @NamedQuery(name = "Usr.findByUid", query = "SELECT u FROM Usr u WHERE u.uid = :uid"),
      @NamedQuery(name = "Usr.findByPassword", query = "SELECT u FROM Usr u WHERE u.password = :password"),
      @NamedQuery(name = "Usr.findByFistname", query = "SELECT u FROM Usr u WHERE u.fistname = :fistname"),
      @NamedQuery(name = "Usr.findByLastname", query = "SELECT u FROM Usr u WHERE u.lastname = :lastname"),
      @NamedQuery(name = "Usr.findByAddress1", query = "SELECT u FROM Usr u WHERE u.address1 = :address1"),
      @NamedQuery(name = "Usr.findByAddress2", query = "SELECT u FROM Usr u WHERE u.address2 = :address2"),
      @NamedQuery(name = "Usr.findByPostcode", query = "SELECT u FROM Usr u WHERE u.postcode = :postcode"),
      @NamedQuery(name = "Usr.findByEmail", query = "SELECT u FROM Usr u WHERE u.email = :email"),
      @NamedQuery(name = "Usr.findByPhone", query = "SELECT u FROM Usr u WHERE u.phone = :phone")})
  public class Usr implements Serializable {
      private static final long serialVersionUID = 1L;
      @Id
      @Basic(optional = false)
      @Column(name = "UID", nullable = false, length = 8)
      private String uid;
      @Basic(optional = false)
      @Column(name = "PASSWORD", nullable = false, length = 20)
      private String password;
      @Basic(optional = false)
      @Column(name = "FISTNAME", nullable = false, length = 30)
      private String fistname;
      @Basic(optional = false)
      @Column(name = "LASTNAME", nullable = false, length = 60)
      private String lastname;
      @Basic(optional = false)
      @Column(name = "ADDRESS1", nullable = false, length = 100)
      private String address1;
      @Column(name = "ADDRESS2", length = 100)
      private String address2;
      @Basic(optional = false)
      @Lob
      @Column(name = "CITY", nullable = false)
      private byte[] city;
      @Basic(optional = false)
      @Column(name = "POSTCODE", nullable = false, length = 10)
      private String postcode;
      @Column(name = "EMAIL", length = 50)
      private String email;
      @Column(name = "PHONE")
      private Integer phone;
  
      public Usr() {
      }
  
      public Usr(String uid) {
          this.uid = uid;
      }
  
      public Usr(String uid, String password, String fistname, String lastname, String address1, byte[] city, String postcode) {
          this.uid = uid;
          this.password = password;
          this.fistname = fistname;
          this.lastname = lastname;
          this.address1 = address1;
          this.city = city;
          this.postcode = postcode;
      }
  
      public String getUid() {
          return uid;
      }
  
      public void setUid(String uid) {
          this.uid = uid;
      }
  
      public String getPassword() {
          return password;
      }
  
      public void setPassword(String password) {
          this.password = password;
      }
  
      public String getFistname() {
          return fistname;
      }
  
      public void setFistname(String fistname) {
          this.fistname = fistname;
      }
  
      public String getLastname() {
          return lastname;
      }
  
      public void setLastname(String lastname) {
          this.lastname = lastname;
      }
  
      public String getAddress1() {
          return address1;
      }
  
      public void setAddress1(String address1) {
          this.address1 = address1;
      }
  
      public String getAddress2() {
          return address2;
      }
  
      public void setAddress2(String address2) {
          this.address2 = address2;
      }
  
      public byte[] getCity() {
          return city;
      }
  
      public void setCity(byte[] city) {
          this.city = city;
      }
  
      public String getPostcode() {
          return postcode;
      }
  
      public void setPostcode(String postcode) {
          this.postcode = postcode;
      }
  
      public String getEmail() {
          return email;
      }
  
      public void setEmail(String email) {
          this.email = email;
      }
  
      public Integer getPhone() {
          return phone;
      }
  
      public void setPhone(Integer phone) {
          this.phone = phone;
      }
  
      @Override
      public int hashCode() {
          int hash = 0;
          hash += (uid != null ? uid.hashCode() : 0);
          return hash;
      }
  
      @Override
      public boolean equals(Object object) {
          // TODO: Warning - this method won't work in the case the id fields are not set
          if (!(object instanceof Usr)) {
              return false;
          }
          Usr other = (Usr) object;
          if ((this.uid == null &amp;&amp; other.uid != null) || (this.uid != null &amp;&amp; !this.uid.equals(other.uid))) {
              return false;
          }
          return true;
      }
  
  
  
      @Override
      public String toString() {
          return "org.danizmax.Usr[uid=" + uid + "]";
      }
  
  }
  </code></pre>
  
  <p>persistance.xml</p>
  
  <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
  &lt;persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"&gt;
    &lt;persistence-unit name="SchoolPU" transaction-type="JTA"&gt;
      &lt;jta-data-source&gt;jdbc/school&lt;/jta-data-source&gt;
      &lt;properties&gt;
      &lt;/properties&gt;
    &lt;/persistence-unit&gt;
  &lt;/persistence&gt;
  </code></pre>
  
  <p>The class where I use the entity:</p>
  
  <pre><code>import java.util.Iterator;
  import java.util.List;
  import javax.ejb.Stateless;
  import javax.persistence.EntityManager;
  import javax.persistence.Persistence;
  import javax.persistence.PersistenceContext;
  
  /**
   *
   * @author danizmax
   */
  @Stateless
  public class ValidatorBean {
  
      @PersistenceContext
      EntityManager em;
  
      public ValidatorBean() {
  
  
      }
  
      public boolean validate(String user, String pass) {
  
          List users = em.createQuery("SELECT * FROM usr").getResultList();
  
          Iterator it = users.iterator();
  
          //ignore the stupid validation it's only to try out JPA
          while(it.hasNext()){
              Usr u = (Usr) it.next();
  
              if(u.getUid().equals(user) &amp;&amp; u.getPassword().equals(pass)){
                  return true;
              }
          }
  
  
          return false;
      }
  }
  </code></pre>
  
  <p><strong>UPDATE:</strong> To be fair to you guys who answered and reward your effort, now that I actually learned the technology and use it in real world, I decided to close this answer with awarding the best answer that was my most probable solution I found my self long time ago.</p>