Vra

Ek oprigting van 'n projek met behulp van Hibernate 3.3.1 GA en PostgreSQL 8.3. Ek het nou net 'n databasis, die eerste tafel, bygevoeg 'n ry daar en nou instel Hibernate.

Maar selfs die eenvoudigste vraag:

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

kan nie uitgevoer word nie (leë lys teruggestuur al is daar 'n rekord in die databasis). Ek kyk na die PostgreSQL logs te sien:

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

Ek het 'n eenvoudige program met behulp van eenvoudige JDBC om dieselfde data haal en dit het gewerk. PostgreSQL logs in hierdie geval lyk dit (vir 'n vergelyking):

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  

Hibernate debug log nie enige foute aan te dui. Neem ek die navraag in die logs gelys:

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=?

en uit te voer dit agains die databasis in die psql, dit werk (dit beteken dat Hibernate n behoorlike SQL gegenereer).

Hier is die Hibernate opset:

<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>

... en die kartering lêer:

<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>

Googlen vir unexpected EOF log inskrywing was nie friutful. Enige idees, gemeenskap?

Was dit nuttig?

Oplossing

Na die toepassing van debugger om die Hibernate kode, is dit vaste!

Dit is nie sigbaar in die teks die vraag, maar die probleem is dat Place geslaag om die createCriteria() metode is van 'n ander pakket, nie com/example/data, wat in die opset XML-lêers.

Hibernate beroep Class.isAssignableFrom(), en as vals is terug, dit uitgaan stil, dus die verbinding breek. Ek sal 'n kaartjie vir Hibernate ontwikkelaars oop op hierdie saak.

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top