Я создал приложение с использованием JPA в контейнере EJB.Вот мой код
@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();
}
При попытке запустить этот метод из веб-службы я получаю следующую ошибку: java.lang.IllegalArgumentException: The attribute [Username] from the managed type....
В чем может быть проблема?Я думаю, что у меня проблема с from.get("Username")
...
Как вы думаете?И как это исправить?
Редактировать: 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 many-to-one association to Project
@OneToMany(mappedBy="workspace")
private Set<Project> 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<Project> getProjects() {
return this.projects;
}
public void setProjects(Set<Project> projects) {
this.projects = projects;
}
}