persistencia example ejemplo java hibernate java-ee orm hql

example - orm java



java.lang.ClassCastException:[Ljava.lang.Object; no se puede convertir a entidad.UserEntity (1)

Debido a que está utilizando una proyección de selección múltiple, en realidad está buscando una matriz de objetos, por lo que debe cambiar la lógica de procesamiento de resultados de la consulta a:

List<Object[]> tuples = (List<Object[]>) session.createQuery(query).list(); for(Object[] tuple : tuples) { UserEntity ue = tuple[0]; Number roleId = tuple[1]; }

Quiero consultar dos tablas en Hibernate. tabla de featch 3 (Usuario - Rol - Perfil) en Entidad de usuario. consulta con hql:

query= "select ue, ue.roleEntity.roleId from UserEntity ue ,RoleEntity re fetch all properties where ue.roleEntity.roleId=re.roleId and ue.username =''reza'' and ue.password=''123456''";

y ejecutar consulta:

try { sessionFactory = HibernateUtil.getSessionFactory(); session = sessionFactory.getCurrentSession(); transaction = session.beginTransaction(); userEntityList = (List<UserEntity>) session.createQuery(query).list(); transaction.commit(); } catch (HibernateException e) { try { throw new DaoException("Fetal exception in", e); } catch (DaoException e1) { e1.printStackTrace(); } }

clase de uso: esta clase es geteer y seter:

public class UserEntity { private int userId; private long personalCode; private String username; private String password; private short active; private String question; private String passive; private ProfileEntity profileEntity; private RoleEntity roleEntity;

hibernate maping para userEntity.hbm.xml

<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="entity"> <class name="UserEntity" table="TABLE_USER"> <id name="userId" type="java.lang.Integer" column="USER_ID"> <generator class="increment" /> </id> <property name="personalCode" type="java.lang.Long" column="PERSONALCODE"> </property> <property name="username" type="java.lang.String" column="USERNAME"> </property> <property name="password" type="java.lang.String" column="PASSWORD"> </property> <property name="active" type="java.lang.Short" column="ACTIVE"> </property> <property name="question" type="java.lang.String" column="QUCTION"> </property> <property name="passive" type="java.lang.String" column="PASSIVE"> </property> <many-to-one name="roleEntity" class="entity.RoleEntity" column="ROLE_ID" cascade="none" fetch="select" /> <many-to-one name="profileEntity" class="ProfileEntity" cascade="delete" column="profile_id"/> </class> </hibernate-mapping>

y clase hibernateutil para crear sesión:

import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static SessionFactory sessionFactory; static { try { Configuration configuration = new Configuration().configure(); StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); sessionFactory = configuration.buildSessionFactory(builder.build()); } catch (Throwable th) { System.err.println("Enitial SessionFactory creation failed" + th); throw new ExceptionInInitializerError(th); } } /** * @return */ public static SessionFactory getSessionFactory() { return sessionFactory; } }