2012-01-15 83 views
4

我只是想與EclipseLink的一個簡單的本機查詢,但我不能讓它工作EclipseLink的錯誤:異常說明:缺少描述符

@Repository("CarsRepository") 
public class JpaCarsRepository { 

    @PersistenceContext 
    private EntityManager em; 

    public List<Car> getCars(){ 
    Query q=em.createNativeQuery("SELECT id,name_car FROM CARS",Car.class); 
    List<Car> results=q.getResultList(); 

我的「汽車」類定義爲@實體。 (我的persistence.xml只有基本的連接設置),我得到'Car'類的'Missing descriptor'錯誤。

這是怎麼發生的?我看到一個similar question沒有幫助我。

第二個問題:

如果我不指定的「createNativeQuery」功能(Car.class)的第二個參數,它返回一個對象名單,這樣我就可以看到results.get(0)價值是[1輛車]。我可以迭代對象列表。所以,如果

Object o=results.get(0) 

我可以創建汽車手動對象,但我不知道如何來獲取對象的第一個值,如果我打印的問題o [0]來獲取對象的值1(這是[ 1汽車])我得到以下錯誤表達式的類型必須是陣列類型,但解析爲對象

我怎樣才能訪問對象的每個值?

回答

2

它不認爲汽車爲實體,看起來好像沒有被掃描。在persistence.xml幫助中將你的實體列在class-element中?

您的第二次嘗試返回對象數組列表。要訪問值你必須首先轉換爲結果的一排設置爲對象數組:

Object[] o=results.get(0) 
//types below are just guessed: 
Integer id = o[0]; 
String name = o[1]; 
+0

我加previosuly我的實體persistence.xml中沒有成功,但是在重試之後,我發現我的錯誤是不指定@Id和@Column(name =「columname」)在我的汽車模型類的屬性 – de3 2012-01-15 23:15:37

+0

詳細答案已在http://stackoverflow.com/a/19712522/641103 – 2013-10-31 17:05:28