如何在HQL中选择对象的类?当我执行以下操作时:
select e.class, e.name from Entity e
Run Code Online (Sandbox Code Playgroud)
Hibernate返回一个Integer(例如[12,"name"])而不是类对象.如何返回Java类,或者至少返回类或实体名称?或者,如果这不可能,我如何将12转换为Java类?
出于性能原因,我无法查询完整的对象,即我无法查询
select e from Entity
Run Code Online (Sandbox Code Playgroud)
此致,Jochen
如果你是hibernate4,你可以使用HQL函数'type()'来获取实体类型
select type(e), e.name from Entity e
Run Code Online (Sandbox Code Playgroud)
如果你是hibernate3,session.iterate()只返回带有id的HibernateProxy实体,你可以从中获取实体名称和id,而无需初始化.
Iterator iterator = session.createQuery("from Entity e").iterate();
while(iterator.hasNext()) {
HibernateProxy object = (HibernateProxy)iterator.next();
System.out.println(object.getHibernateLazyInitializer().getIdentifier());
System.out.println(object.getHibernateLazyInitializer().getEntityName());
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用 addEntity() 方法告诉 Hibernate 使用您的类来映射答案
Query query = session.createSQLQuery(
"select e.class,e.name from Entity e where <your conditions>")
.addEntity(Entity.class)
List<Entity> result = query.list();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20981 次 |
| 最近记录: |