Die Verwendung von Coalesce-oder Case-Anweisung in JPA

Wie zu verwenden coalesce oder case statement in JPA 2 mit CriteriaBuilder

Für viele Datensätze initiatedBy leer, und als ein Ergebnis employeeName wird null für diese Datensätze. Ich möchte die Anzeige System Generiert wenn employeeName ist null für die Projekte, in denen initiatedBy Mitarbeiter ist null in Datenbank-Tabelle.

Habe ich die folgenden Beziehungen in Entitäten

Projekt

@Entity
@Table(name = "PROJECT") 
public class Project {

@Id
@Column(name = "PROJECTID")
private Long projectId;
....
....

@ManyToOne
@JoinColumn(name = "EMPLOYEENUMBER", referencedColumnName = "EMPLOYEENUMBER")
private Employee empNumber;

@ManyToOne
@JoinColumn(name = "INITIATEDBY", referencedColumnName = "EMPLOYEENUMBER")
private Employee initiatedBy;

Mitarbeiter

@Entity
@Table(name = "EMPLOYEES")
public class Employee {

@Id
@Column(name = "EMPLOYEENUMBER")
private String employeeNo;

@Column(name = "EMPLOYEENAME")
private String employeeName;
.....
.....

@OneToMany(mappedBy = "empNumber")
private Set<Project> employeeProject;

@OneToMany(mappedBy = "initiatedBy")
private Set<Project> employeeInitiatedBy;

.....

in DAOImpl Klasse, ich habe

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Project> c = cb.createQuery(Project.class);
Root<Project> emp = c.from(Project.class);
c.orderBy(cb.desc(emp.get("projectNo")));
c.select(emp);

TypedQuery<Project> q =  entityManager.createQuery(c);

Ich habe versucht mit

Coalesce<String> coalesce = cb.coalesce();
coalesce.value(emp.<String>get("employeeName"));
coalesce.value("System Generated");

Jedoch wenn ich laufen, ich bin immer Ausnahme als

java.lang.IllegalArgumentException: Unable to resolve attribute 
[employeeName] against path

Jede Hilfe zu diesem wird sehr spürbar.

InformationsquelleAutor Jåcob | 2013-07-29

Schreibe einen Kommentar