簡體   English   中英

返回實體列表而不是對象列表

[英]Return List of entity instead of List of object

Eclipse / Java

我有一種執行數據庫查詢的方法。

myBean:

List<Composicao> itemProdutoLista = compPrecoServico.buscar(Composicao.nomeQuery);

nomeQuery是:

@NamedQuery(name = "nomeQuery", query= " SELECT composicao.valortotal,composicao.id FROM Composicao composicao

查詢-javax.persistence.query

public List<T> buscar(String nomeQuery) {
    Query query = entityManager.createNamedQuery(nomeQuery);
    return query.getResultList();
}

我的返回列表公交車讓我知道: Object elementData

在此處輸入圖片說明

如何在返回的buscar方法中獲取Entity Composicao elementdata? 代替對象elementData

我給了您要在上一個問題中使用的查詢:

SELECT composicao FROM Composicao composicao

您是否不了解選擇實體的兩個字段,就像您在查詢中所做的那樣

SELECT composicao.valortotal,composicao.id FROM Composicao composicao
                    ^-- first field      ^-- second field    

不返回Composicao對象,僅返回您選擇的兩個字段: valortotalid

您明確地要求JPA 返回valortotalid 為什么要返回所有其他字段並創建一個Composicao對象? 您需要所有字段,而不僅僅是valortotal和id。 因此查詢為(為防萬一,我將第三次重復該查詢):

SELECT composicao FROM Composicao composicao

假設您正在談論諸如JPA之類的東西。

將一個構造函數放在您的實體(除了空/默認構造函數之外)上,以接受您的每個查詢參數。

@Entity
public class Jedi
   @Id private int id;
   private String name;

   //required by the standard
   public Jedi(){}

   public Jedi(int id, String name) {
     this.id = id;
     this.name = name;
   }

   //...
 }

然后你的查詢

select NEW org.starwars.Jedi(j.id,j.name) from Jedi j where name.endsWith('Sky Walker')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM