Foros del Web » Programación para mayores de 30 ;) » Java »

Consulta criteria funciona según fila

Estas en el tema de Consulta criteria funciona según fila en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/04/2011, 13:17
 
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 4
Antigüedad: 13 años
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
  #2 (permalink)  
Antiguo 04/04/2011, 13:51
 
Fecha de Ingreso: abril-2011
Ubicación: Málaga
Mensajes: 4
Antigüedad: 13 años
Puntos: 0
Respuesta: Consulta criteria funciona según fila

Adjunto la base de datos para las tablas User, Student y Tutor:

--
-- Estructura de tabla para la tabla `student`
--

CREATE TABLE IF NOT EXISTS `operaciona`.`Student` (
`id_user` bigint(20) NOT NULL,
`birth_date` date NOT NULL,
`id_tutor` bigint(20) NOT NULL,
KEY `id_tutor` (`id_tutor`),
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


--
-- Estructura de tabla para la tabla `tutor`
--

CREATE TABLE IF NOT EXISTS `operaciona`.`Tutor` (
`id_user` bigint(20) NOT NULL,
`group` varchar(255) COLLATE utf8_bin NOT NULL,
KEY `id_user` (`id_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

--
-- Estructura de tabla para la tabla `user`
--

CREATE TABLE IF NOT EXISTS `operaciona`.`User` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`username` varchar(255) COLLATE utf8_bin NOT NULL,
`password` varchar(255) COLLATE utf8_bin NOT NULL,
`name` varchar(255) COLLATE utf8_bin NOT NULL,
`surname` varchar(255) COLLATE utf8_bin NOT NULL,
`user_type` tinyint(1) NOT NULL COMMENT '0 = alumno, 1 = profesor',
`active` tinyint(1) NOT NULL COMMENT '1 = activo, 0 = inactivo',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=3 ;

Etiquetas: hibernate
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:42.