&引用;选择“新建构造函数”;查询返回java.lang.Object而不是构造函数类的实例
var&引用;选择“新建构造函数”;查询返回java.lang.Object而不是构造函数类的实例,java,hibernate,jpa,jpql,entitymanager,Java,Hibernate,Jpa,Jpql,Entitymanager,vartoShow是纯java.lang.Object的实例,如果我将其转换为java.lang,它是唯一有效的方法,我认为这不是正确的方法。我的方法: public FactionProjection getFactionById(int id){ Query query = entityManager.createQuery( "SELECT new com.gamerecords.result_recorder.model.projection.F
toShow
是纯java.lang.Object
的实例,如果我将其转换为java.lang
,它是唯一有效的方法,我认为这不是正确的方法。我的方法:
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
,或 删除它派系.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;
}
我已经看过很多“选择新构造函数”表达式的示例,并且不需要强制转换,这让我觉得我在这里犯了一个错误。普通查询API不会返回您期望的对象的确切类型,您需要强制转换
Query#getSingleResult()
返回一个对象
。您可以改用TypedQuery
:
TypedQuery<FactionProjection> query;
var result= query.getSingleResult();
TypedQuery;
var result=query.getSingleResult();