Hibernate JPA本机查询结果集
我需要通过在Hibernate中执行本机查询来获取结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体 需要获取列表中的结果集。由于select输出可能会变化(读取动态),因此我无法使用SqlResultSetMapping 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个单值结果。(Hibernate JPA)Hibernate JPA本机查询结果集,hibernate,jpa,Hibernate,Jpa,我需要通过在Hibernate中执行本机查询来获取结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体 需要获取列表中的结果集。由于select输出可能会变化(读取动态),因此我无法使用SqlResultSetMapping 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个单值结果。(Hibernate JPA) Query Query=manager.createNativeQuery(“从Fresh_测试中选择名称,其中id=1”); 列表金额=query.
Query Query=manager.createNativeQuery(“从Fresh_测试中选择名称,其中id=1”);
列表金额=query.getResultList();
如果(金额==null)
{
System.out.println(“嘿,它是空的”);
返回;
}
用于(对象e:arr)
{
System.out.println(例如toString());
}
输出为:Alice
当我试图用Query asselect name从同一代码中提取多个select时,从fresher_测试中指定id=1
输出为:[Ljava.lang.Object;@8b1a4f
一个对象。如何从该对象获取字段?。我试图将对象e(List l=(List)e;)类型转换为列表,但我抛出了java.lang.ClassCastException:java.lang.String无法转换为java.util.List
这有一种方法可以得到列表或数组中的值吗
注意:我不能使用结果类/实体,因为结果可能是动态的。在获取多个列时,结果是一个
列表。
。每个对象[]
包含一行。因此,在您的情况下,每个对象[]
将包含两个元素,第一个是名称,第二个是名称
请注意,
getResultList()
将永远不会返回null。您不应该检查它。JPA 2.0,如果您希望在自定义bean中获得结果:
使用特定构造函数生成bean
package my.package;
public class MyBean{
...
public MyBean(Long id, String desc, Long id2)
然后在实体o映射中,使命名查询如下
@NamedQuery(name = "myNamedQuery",
query = "select new my.package.MyBean(e.idSomething, e.description, e.secondId)
from DBEntity e")
我也面临着同样的问题,在这里如何解决它:
List<User> records = entityManager.createNamedQuery("latestStatusByUser").getResultList();
List<User> userRecords = new ArrayList<User>();
Iterator it = records.iterator( );
while (it.hasNext( )) {
Object[] result = (Object[])it.next(); // Iterating through array object
userRecords.add(new User(result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7]));
}
List records=entityManager.createNamedQuery(“latestStatusByUser”).getResultList();
List userRecords=new ArrayList();
Iterator it=records.Iterator();
while(it.hasNext()){
Object[]result=(Object[])it.next();//遍历数组对象
添加(新用户(结果[0]、结果[1]、结果[2]、结果[3]、结果[4]、结果[5]、结果[6]、结果[7]);
}
您可以使用以下命令
NativeQueryImpl nativeQuery = (NativeQueryImpl) query;
nativeQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> result = nativeQuery.getResultList();
NativeQueryImpl nativeQuery=(NativeQueryImpl)查询;
nativeQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List result=nativeQuery.getResultList();
List amount=null;amount=query.getResultList();for(Object[]e:amount){System.out.println(e[0]+“”+e[1]);}
NativeQueryImpl nativeQuery = (NativeQueryImpl) query;
nativeQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> result = nativeQuery.getResultList();