Select only a few columns of mapped objects with Hibernate

0

How can I select only a few fields from a related object?

How it works (catching everything):

            List<Participante> participantes = this.entityManager.createQuery("SELECT a "
                + " FROM Participante a WHERE a.pessoa_id = :pessoa "
                + "AND a.motivo_id = :motivo")
                .setParameter("pessoa", pessoa).setParameter("motivo", motivo).getResultList();

As I've tried:

            List<Participante> participantes = this.entityManager.createQuery("SELECT "
                + "new Evento(a.evento_id.id, a.evento_id.nome, "
                + "new Pessoa(a.evento_id.criador_id.id, a.evento_id.criador_id.nome)) "
                + " FROM Participante a WHERE a.pessoa_id = :pessoa "
                + "AND a.motivo_id = :motivo")
                .setParameter("pessoa", pessoa).setParameter("motivo", motivo).getResultList();

With the constructor there is no error, without constructor it gives me error that the object could not be mapped.

How do I transform my Participants into Objects (the 1 shown works):

    public List<Evento> pegaEventos(List<Participante> participantes) {
    List<Evento> eventos = new ArrayList<Evento>();
    try {
        for(Participante participante : participantes) {
            System.err.println("Evento ID: " + participante.getEvento_id().getId());
            eventos.add(participante.getEvento_id());
        }
        return eventos;
    } catch (Exception e) {

        System.err.println(junges.getFullStackTrace(e));
        return null;
    }
}

Event Template:

    @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="nome")
private String nome;

@Column(name="descricao")
private String descricao;

@Column(name="preco")
private double preco;

@Column(name="idade")
private int idade;

@Column(name="minpessoas")
private int minpessoas;

@Column(name="maxpessoas")
private int maxpessoas;

@Column(name="dtinicio")
private Timestamp inicio;

@Column(name="dtfim")
private Timestamp fim;

@Column(name="criacao")
private Timestamp criacao;

@ManyToOne
@JoinColumn(name="categoria")
private Categoria categoria;

@Column(name="endereco")
private String endereco;

@ManyToOne
@JoinColumn(name="criador_id")
private Pessoa criador_id;

@Column(name="desativado")
private boolean desativado;

Person Template:

    @Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;

@Column(name="nome")
private String nome;

@Column(name="sobrenome")
private String sobrenome;

@Column(name="email")
private String email;

@Column(name="senha")
private String senha;

@Column(name="telefone")
private String telefone;

@Column(name="endereco")
private String endereco;

@ManyToOne
@JoinColumn(name="localizacao")
private Localizacao localizacao;

@Column(name="login")
private Timestamp login;

@Column(name="registro")
private Timestamp registro;

@Column(name="aniversario")
private Timestamp aniversario;

@Column(name="isAdm")
private int isAdm;

@Column(name="desativado")
private boolean desativado;

private double nota;
    
asked by anonymous 07.11.2017 / 12:23

0 answers