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