2017-06-06 76 views
1

當我運行以下代碼時,它僅返回對象列表。我想要車輛中的清單。我的代碼中有什麼錯誤?使用實體管理器和JPA,僅返回對象

吾道班級是:

public class VehicleDao { 

HibernateTemplate template; 
private EntityManager emManager; 

@PersistenceContext 
public void setEm(EntityManager emManager) { 
    this.emManager = emManager; 
} 
public List<Vehicle> getVehicleDataUsing_Sp() 
{ 
Properties prop= new Properties(); 
    try { 
     InputStream input = new FileInputStream("E:\\spring4AndHibernate5\\src\\Query.properties"); 
     prop.load(input); 
     Query query = emManager.createNativeQuery(prop.getProperty("vehicleQuery")); 
     List<Vehicle> list = query.getResultList(); 
     return list; 
     } 
} 
+0

請保持catch塊,最後(可選) –

+0

@Manihtraa請不要根據回答編輯您的代碼。這會讓你更難理解你的實際問題。 – davidxxx

回答

1

你要麼需要在本地查詢定義來定義的結果類(使用resultClass=Vehicle.class這裏您已經定義了一個名爲查詢)

和/或

你需要在使用createNamedQuery(使用createNativeQuery(prop.getProperty("vehicleQuery"), Vehicle.class))時映射本機類。

1

當你指定的返回類型爲void您不能返回List<Vehicle>

試試這個:

public List<Vehicle> getVehicleDataUsing_Sp() 

而且你還需要try塊後添加catch塊,像這樣:

catch(Exception e) 
{ 
} 
+0

List list = query.getResultList();當這行執行列表的值是數組對象時。我想要車輛對象列表。你說只返回類型相關的問題,但我想與數據類型相關的修復。 – Manihtraa

+0

哦,我明白了。我會糾正它。只是給我一些時間:) –

1

因爲它是一個本機查詢,它不知道除非你告訴它,否則嘗試將它映射到它。

嘗試:

Query query = emManager.createNativeQuery(prop.getProperty("vehicleQuery"), Vehicle.class); 
+0

非常感謝。它工作正常。 – Manihtraa