title: JPA query language criteriaBuilder
body: <p>I have built an application using JPA in an EJB container.
  Here's my code</p>
  
  <pre><code>@PersistenceContext(unitName = "damate-pu")
  private EntityManager   em;
  
  @Override
  public Workspace find(String username, String path) {
      CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
      CriteriaQuery&lt;Workspace&gt; criteriaQuery = criteriaBuilder.createQuery(Workspace.class);
      Root&lt;Workspace&gt; from = criteriaQuery.from(Workspace.class);
      Predicate condition = criteriaBuilder.equal(from.get("Username"), username);
      Predicate condition2 = criteriaBuilder.equal(from.get("Path"), path);
      Predicate condition3 = criteriaBuilder.and(condition, condition2);
      criteriaQuery.where(condition3);
      Query query = em.createQuery(criteriaQuery);
  
      return (Workspace) query.getSingleResult();
  }
  </code></pre>
  
  <p>When I try to run this method from a webservice I get the following error:
  <code>java.lang.IllegalArgumentException: The attribute [Username] from the managed type....</code></p>
  
  <p>What can be the problem? I think I have a problem with <code>from.get("Username")</code>...<br>
  What do you think? And how to fix it?</p>
  
  <hr>
  
  <p>Edit: Workspace.java</p>
  
  <pre><code>package com.ubb.damate.model;
  
  import java.io.Serializable;
  import javax.persistence.*;
  import java.util.Date;
  import java.util.Set;
  
  
  /**
   * The persistent class for the workspace database table.
   * 
   */
  @Entity
  @Table(name="workspace")
  public class Workspace implements Serializable {
      private static final long serialVersionUID = 1L;
  
      @Id
      @GeneratedValue(strategy=GenerationType.AUTO)
      @Column(name="WorkspaceId", unique=true, nullable=false)
      private int workspaceId;
  
      @Temporal( TemporalType.DATE)
      @Column(name="CreationDate", nullable=false)
      private Date creationDate;
  
      @Lob()
      @Column(name="Path", nullable=false)
      private String path;
  
      @Column(name="Username", nullable=false, length=20)
      private String username;
  
      //bi-directional many-to-one association to Project
      @OneToMany(mappedBy="workspace")
      private Set&lt;Project&gt; projects;
  
      public Workspace() {
      }
  
      public int getWorkspaceId() {
          return this.workspaceId;
      }
  
      public void setWorkspaceId(int workspaceId) {
          this.workspaceId = workspaceId;
      }
  
      public Date getCreationDate() {
          return this.creationDate;
      }
  
      public void setCreationDate(Date creationDate) {
          this.creationDate = creationDate;
      }
  
      public String getPath() {
          return this.path;
      }
  
      public void setPath(String path) {
          this.path = path;
      }
  
      public String getUsername() {
          return this.username;
      }
  
      public void setUsername(String username) {
          this.username = username;
      }
  
      public Set&lt;Project&gt; getProjects() {
          return this.projects;
      }
  
      public void setProjects(Set&lt;Project&gt; projects) {
          this.projects = projects;
      }
  }
  </code></pre>