Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/04/2011, 13:17
albertocastillo81
 
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Consulta criteria funciona según fila

Hola a todos,

Tengo un proyectito swing y hibernate, en el que de forma típica se solicita usuario y contraseña para acceder. Los usuarios pueden ser profesores o alumnos.

Tengo la siguiente consulta con criteria:

public User findBy(String username, String password) {
Criteria crit = this.getSession().createCriteria(this.persistentCl ass)
.add(Restrictions.eq(USERNAME, username))
.add(Restrictions.eq(PASSWORD, password))
.add(Restrictions.eq(ACTIVE, true))
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTIT Y);

return this.unique(crit);
}


Si introduzco usuario y contraseña de un profesor me lo identifica, pero no para el caso de un alumno.

Estos son los mapeos en xml: (hsgo uso de la herencia en hibernate)

<?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>
<class name="model.User" table="user" catalog="operaciona">

<id name="id" type="long">
<column name="id" />
<generator class="identity" />
</id>

<property name="name" type="string">
<column name="name" />
</property>

<property name="surname" type="string">
<column name="surname" />
</property>

<property name="username" type="string">
<column name="username" unique="true" />
</property>

<property name="password" type="string">
<column name="password" />
</property>

<property name="userType" type="integer">
<column name="user_type" />
</property>

<property name="active" type="boolean">
<column name="active" />
</property>


<joined-subclass name="model.Student" table="student">
<key column="id_user"/>

<property name="tutor" type="model.User">
<column name="id_tutor" />
</property>

<set name="expedient" inverse="true" lazy="false">
<key>
<column name="id_expedient" not-null="true" />
</key>
<one-to-many class="model.Expedient" />
</set>

</joined-subclass>

<joined-subclass name="model.Tutor" table="tutor">
<key column="id_user"/>

<property name="group" type="string">
<column name="group" />
</property>

<set name="students" inverse="true" lazy="false">
<key>
<column name="id" not-null="true" />
</key>
<one-to-many class="model.User" />
</set>

</joined-subclass>

</class>

</hibernate-mapping>


¿Qué puedo estar haciendo mal para que la consulta encuentre a un profesor pero no a un alumno? El error que me aparece al intentar logear un alumno es:

04-abr-2011 21:06:58 org.hibernate.type.NullableType nullSafeGet
INFO: could not read column value from result set: id2_10_0_; could not deserialize

Espero vuestra ayuda, porque estoy algo perdido.
Gracias