Pregunta

Estoy configurando un proyecto usando Hibernate 3.3.1 GA y PostgreSQL 8.3.Acabo de crear una base de datos, la primera tabla, agregué una fila allí y ahora configuré Hibernate.

Sin embargo, incluso la consulta más simple:

Criteria criteria = session.createCriteria(Place.class);
List result = criteria.list();

no se pudo ejecutar (se devuelve una lista vacía aunque hay un registro en la base de datos).Miré los registros de PostgreSQL para ver:

2008-09-17 22:52:59 CEST LOG:  connection received: host=192.168.175.1 port=2670  
2008-09-17 22:52:59 CEST LOG:  connection authorized: user=... database=...  
2008-09-17 22:53:00 CEST LOG:  execute <unnamed>: SHOW TRANSACTION ISOLATION LEVEL  
2008-09-17 22:53:02 CEST LOG:  could not receive data from client: Connection reset by peer  
2008-09-17 22:53:02 CEST LOG:  unexpected EOF on client connection  
2008-09-17 22:53:02 CEST LOG:  disconnection: session time: 0:00:03.011 user=... database=... host=192.168.175.1 port=2670

Escribí un programa simple usando JDBC simple para recuperar los mismos datos y funcionó.Los registros de PostgreSQL en este caso se ven así (a modo de comparación):

2008-09-17 22:52:24 CEST LOG:  connection received: host=192.168.175.1 port=2668  
2008-09-17 22:52:24 CEST LOG:  connection authorized: user=... database=...  
2008-09-17 22:52:25 CEST LOG:  execute <unnamed>: SELECT * from PLACE  
2008-09-17 22:52:25 CEST LOG:  disconnection: session time: 0:00:00.456 user=... database=... host=192.168.175.1 port=2668  

El registro de depuración de Hibernate no indica ningún error.Si tomo la consulta que figura en los registros:

15:17:01,859 DEBUG org.hibernate.loader.entity.EntityLoader: Static select for entity com.example.data.Place: select place0_.ID as ID0_0_, place0_.NAME as NAME0_0_, place0_.LATITUDE as LATITUDE0_0_, place0_.LONGITUDE as LONGITUDE0_0_ from PLACE place0_ where place0_.ID=?

y ejecutarlo contra la base de datos en psql, funciona (esto significa que Hibernate ha generado un SQL adecuado).

A continuación se muestra la configuración de Hibernación:

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.url">jdbc:postgresql://192.168.175.128:5433/...</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.username">...</property>
        <property name="hibernate.connection.password">...</property>
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.use_outer_join">true</property>

        <mapping resource="com/example/data/Place.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

...y el archivo de mapeo:

<hibernate-mapping package="com.example.data">
    <class name="com.example.data.Place" table="PLACE">
        <id column="ID" name="id" type="java.lang.Integer">
            <generator class="native"/>
        </id>
        <property column="NAME" name="name" not-null="true" type="java.lang.String">
            <meta attribute="use-in-tostring">true</meta>
        </property>
        <property column="LATITUDE" name="latitude" not-null="true" type="java.lang.Float">
            <meta attribute="use-in-tostring">true</meta>
        </property>
        <property column="LONGITUDE" name="longitude" not-null="true" type="java.lang.Float">
            <meta attribute="use-in-tostring">true</meta>
        </property>
    </class>
</hibernate-mapping>

Buscando en Google unexpected EOF La entrada del registro no fue fructífera.¿Alguna idea, comunidad?

¿Fue útil?

Solución

Después de aplicar el depurador al código de Hibernate, ¡está solucionado!

No es visible en el texto de la pregunta, pero el problema es que Place pasó a la createCriteria() El método es de otro paquete, no com/example/data, especificado en los archivos XML de configuración.

Invocaciones de hibernación Class.isAssignableFrom(), y si se devuelve false, sale silenciosamente, rompiendo así la conexión.Abriré un ticket para los desarrolladores de Hibernate sobre este asunto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top