【发布时间】:2021-05-17 11:08:38
【问题描述】:
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;
}
我尝试过的:
- 将
.createQuery的第二个参数更改为Faction.class,或 删除它 - 将方法
.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;
}
我看过很多“选择新构造函数”表达式的例子,并且不需要强制转换,这让我觉得我在这里犯了一个错误。
【问题讨论】:
标签: java hibernate jpa jpql entitymanager