java.lang.ClassCastException: [Ljava.lang.Objet; ne peut pas être jeté à l'entité.UserEntity
je veux interroger deux table en mode veille prolongée .
featch 3 table (Rôle d'Utilisateur - Profil ) dans l'Entité utilisateur .
requête hql avec :
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'";
et exécuter la requête :
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();
}
}
userentity classe :
cette classe est geteer et 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 cartographique pour 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>
et de la classe hibernateutil pour créer sesstion :
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;
}
}
Il va vous renvoyer une Liste<Object> qui inturn contiennent vos données. Si vous voulez UserEntity être retourné alors simplement utiliser "select ue à partir de UserEntity de l'ue ,des RoleEntity re chercher toutes les propriétés où l'ec.roleEntity.roleId=re.roleId et de l'ue.username = "reza" et de l'ue.mot de passe='123456'"
Pourquoi vous attraper un HibernateException et faire rien de plus que de jeter un DaoException qui re-lève à l'origine d'exception?
salut mprabhat . Je veux que tous le tableau de données pour le rôle et l'utilisateur.
Pourquoi vous attraper un HibernateException et faire rien de plus que de jeter un DaoException qui re-lève à l'origine d'exception?
catch (HibernateException e) { try { throw new DaoException("Fetal exception in", e); } catch (DaoException e1) { e1.printStackTrace(); } }
salut mprabhat . Je veux que tous le tableau de données pour le rôle et l'utilisateur.
OriginalL'auteur reza rostami | 2014-12-03
Vous devez vous connecter pour publier un commentaire.
Parce que vous êtes à l'aide d'une multi-sélection de projection, vous êtes réellement récupérer un tableau d'objets, de sorte que vous besoin de changer le résultat de la requête logique de traitement:
OriginalL'auteur Vlad Mihalcea