Note that there are some explanatory texts on larger screens.

plurals
  1. POSyntax error parsing a trivial query with JPA
    primarykey
    data
    text
    <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>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload