Сохранить результат запроса в пользовательском классе - PullRequest
0 голосов
/ 24 сентября 2018

Я хочу сохранить результат запроса в списке.Но когда я отлаживаю, чтобы увидеть список, он полон Object [], а не класса Conta.

Вот мой запрос и класс Conta.

Query query = em.createQuery("SELECT p.data data, c.nome nomePedido, c.valor, g.nome nomeGarcom FROM Pedidos p\n"
            + "    JOIN Cardapio c ON p.idItem = c.id\n"
            + "    JOIN Garcons g ON p.idGarcon = g.id", Conta.class);
    contaList = query.getResultList();



public class Conta {
private Date data;
private String nomeGarcom;
private String nomePedido;
private float valor;

public Conta(Date data, String nomePedido, float valor, String nomeGarcom) {
    this.data = data;
    this.nomeGarcom = nomeGarcom;
    this.nomePedido = nomePedido;
    this.valor = valor;
}  ... getters and setters

Ответы [ 3 ]

0 голосов
/ 24 сентября 2018

AFAIK, вы можете использовать выражение конструктора в JPA, тем более что уже есть соответствующий конструктор:

Query query = em.createQuery("SELECT new com.mine.Conta(p.data, g.nome, c.nome, c.valor) FROM Pedidos p\n" ...
0 голосов
/ 24 сентября 2018

Ваш класс Conta не является Jpa @Entity - поэтому он не знает, как отобразить результат в ваш класс Java.Правильно аннотируйте Conta, присвойте ему первичный ключ, это самый простой способ.

@Entity
public class Conta {
 @Id
 private long someID;

 @Column
 private float valor;

 @Column
 ... more columns (watch out for your Timestamp, probably needs @Temporal)

....getters and setters
}

Как и вы, вы не можете использовать Jpa для сохранения экземпляров вашего Conta в базу данных, котораяВероятно, это одна вещь, которую вы хотите сделать позже.

Рассмотрите этот ответ тоже: JPA: Как преобразовать собственный набор результатов запроса в коллекцию классов POJO

0 голосов
/ 24 сентября 2018

Леандро, не могли бы вы также прикрепить код getResultList ()?Из моего опыта, есть две возможные причины.Во-первых, ваш метод getResultList имеет неправильный тип возвращаемого значения.Во-вторых, ваш запрос вообще не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...