I have built an application using JPA in an EJB container. Here's my code

@PersistenceContext(unitName = "damate-pu")
private EntityManager   em;

@Override
public Workspace find(String username, String path) {
    CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
    CriteriaQuery<Workspace> criteriaQuery = criteriaBuilder.createQuery(Workspace.class);
    Root<Workspace> 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();
}

When I try to run this method from a webservice I get the following error: java.lang.IllegalArgumentException: The attribute [Username] from the managed type....

What can be the problem? I think I have a problem with from.get("Username")...
What do you think? And how to fix it?


Edit: Workspace.java

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 m
Edit
Report