![](/img/trans.png)
[英]Native Query returns list with java.lang.Object instead of custom object type in JPA application
[英]“select new constructor” query returns java.lang.Object instead of instance of constructors class
var toShow
是純java.lang.Object
的實例,如果我將其轉換為FactionProjection
,它的唯一工作方式,我認為這不是正確的方法。 我的方法:
public FactionProjection getFactionById(int id){
Query query = entityManager.createQuery(
"SELECT new com.gamerecords.result_recorder.model.projection.FactionProjection(f.name)" +
"FROM Faction f WHERE f.id = :id",FactionProjection.class)
.setParameter("id",id);
var toShow = query.getSingleResult();
return toShow;
}
構造函數:
public FactionProjection(String name) {
this.name = name;
}
我嘗試過的:
Faction.class
.createQuery
或將其刪除.getSingleResult()
更改為.getResultList()
我現在的工作代碼是:
public FactionProjection getFactionById(int id){
Query query = entityManager.createQuery(
"SELECT new com.gamerecords.result_recorder.model.projection.FactionProjection(f.name)" +
" FROM Faction f WHERE f.id = :id",FactionProjection.class)
.setParameter("id",id);
var toShow = (FactionProjection)query.getSingleResult();
return toShow;
}
我見過很多“選擇新構造函數”表達式的例子,並且不需要強制轉換,這讓我覺得我在這里犯了一個錯誤。
普通查詢 API 不會返回您期望的 Object 的確切類型,您需要進行轉換。 Query#getSingleResult()
返回Object
。 您可以改用TypedQuery<T>
:
TypedQuery<FactionProjection> query;
var result= query.getSingleResult();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.