如何在HIbernate HQL中选择对象的类?

Joc*_*hen 6 hibernate hql

如何在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

Reh*_*ron 8

如果你是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)