我想做一个简单的查询,将所有名称都放在一个单元格中,但看起来像hibernate不理解GROUP_CONCAT。
这些是我的实体:
实体CitaExamen:
@Entity
@Table(name="cita_examen")
@NamedQuery(name="CitaExamen.findAll", query="SELECT c FROM CitaExamen c")
public class CitaExamen implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
private String nombre;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="agrupacion_flujo_id")
private AgrupacionFlujo agrupacionFlujo;
public CitaExamen() {
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public AgrupacionFlujo getAgrupacionFlujo() {
return agrupacionFlujo;
}
public void setAgrupacionFlujo(AgrupacionFlujo agrupacionFlujo) {
this.agrupacionFlujo = agrupacionFlujo;
}
}
实体AgrupacionFlujo:
@Entity
@Table(name = "agrupacion_flujo")
@NamedQuery(name = "AgrupacionFlujo.findAll", query = "SELECT t FROM AgrupacionFlujo t")
public class AgrupacionFlujo implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToMany(mappedBy = "agrupacionFlujo", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)
private Set<CitaExamen> citaExamenes;
public AgrupacionFlujo() {
citaExamenes = new HashSet<>();
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public Set<CitaExamen> getCitaExamenes() {
return citaExamenes;
}
public void setCitaExamenes(Set<CitaExamen> citaExamenes) {
this.citaExamenes = citaExamenes;
}
public CitaExamen addCitaExamen(CitaExamen citaExamen) {
getCitaExamenes().add(citaExamen);
citaExamen.setAgrupacionFlujo(this);
return citaExamen;
}
public CitaExamen removeCitaExamen(CitaExamen citaExamen) {
getCitaExamenes().remove(citaExamen);
citaExamen.setAgrupacionFlujo(null);
return citaExamen;
}
}
没有GROUP_CONCAT的查询:
String hql =
"SELECT new AgrupacionFlujoRepoDTO(af.id, ce.nombre) "
+ "FROM AgrupacionFlujo af JOIN af.citaExamenes ce ";
结果:
1;名字
1;第二个名字
我希望查询但是错误项目没有运行:
String hql =
"SELECT new AgrupacionFlujoRepoDTO(af.id, GROUP_CONCAT(ce.nombre)) "
+ "FROM AgrupacionFlujo af JOIN af.citaExamenes ce GROUP BY af.id";
期望的结果:
1;名字,第二个名字
关于如何做的任何想法?