JPA教程 - JPA查询Distinct Join条件示例
以下查询使用distinct关键字以获取连接条件的唯一值。List l = em.createQuery(
"SELECT DISTINCT e.department FROM Project p JOIN p.employees e WHERE p.name = "proj"")
.getResultList();
例子
以下代码来自Phone.java。package cn.w3cschool.common;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Phone {
@Id
private long id;
private String number;
private String type;
@ManyToOne
Professor employee;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String phoneNo) {
this.number = phoneNo;
}
public String getType() {
return type;
}
public void setType(String phoneType) {
this.type = phoneType;
}
public Professor getProfessor() {
return employee;
}
public void setProfessor(Professor employee) {
this.employee = employee;
}
public String toString() {
return "Phone id: " + getId() +
", no: " + getNumber() +
", type: " + getType();
}
}
下面的代码来自Department.java。package cn.w3cschool.common;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Department {
@Id
private int id;
private String name;
@OneToMany(mappedBy="department")
private Set employees = new HashSet();
public int getId() {
return id;
}
public void setId(int deptNo) {
this.id = deptNo;
}
public String getName() {
return name;
}
public void setName(String deptName) {
this.name = deptName;
}
public Set getProfessors() {
return employees;
}
public String toString() {
return "Department no: " + getId() +
", name: " + getName();
}
}
以下代码来自Professor.java。package cn.w3cschool.common;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;