Hibernate GROUP_CONCAT

时间:2018-02-05 18:23:44

标签: hibernate group-concat

我想做一个简单的查询,将所有名称都放在一个单元格中,但看起来像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;名字,第二个名字

关于如何做的任何想法?

0 个答案:

没有答案