Hibernate 3: keine Abfrage der PostgreSQL-Datenbank
Ich bin einrichten eines Projekts mit Hibernate 3.3.1 GA
und PostgreSQL 8.3
. Ich habe gerade eine Datenbank, in der ersten Tabelle eine Zeile Hinzugefügt und nun die Konfiguration Hibernate.
Aber auch die einfachste Abfrage:
Criteria criteria = session.createCriteria(Place.class);
List result = criteria.list();
konnte nicht ausgeführt werden (leere Liste zurückgegeben wird, obwohl es einen Datensatz in der Datenbank). Ich schaute auf die PostgreSQL logs zu sehen:
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
Schrieb ich ein einfaches Programm mit reinen JDBC zu Holen, die gleichen Daten und es funktionierte. PostgreSQL logs in diesem Fall wie folgt Aussehen (zum Vergleich):
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 zeigt keine Fehler. Wenn ich die Abfrage aufgelistet in den Protokollen:
15:17:01,859 DEBUG org.hibernate.loader.Entität.EntityLoader: static (Statisch) wählen Sie für Einheit com.Beispiel.Daten.Ort: wählen Sie place0_.ID als ID0_0_, place0_.NAMEN wie NAME0_0_, place0_.BREITENGRAD als LATITUDE0_0_, place0_.LÄNGENGRAD als LONGITUDE0_0_ von ORT place0_ wo place0_.ID=?
und führen Sie es gegen die Datenbank, in der psql, es funktioniert (das bedeutet, dass Hibernate generiert hat, eine korrekte SQL).
Unten ist die Hibernate-Konfiguration:
<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>
...und die mapping-Datei:
<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>
Googeln unexpected EOF
log-Eintrag wurde nicht friutful. Irgendwelche Ideen, Gemeinschaft?
InformationsquelleAutor Sergey Mikhanov | 2008-09-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach der Anwendung debugger an den Hibernate-code, es ist behoben!
Es ist nicht sichtbar in der Frage der text, aber das problem ist, dass
Place
an diecreateCriteria()
Methode ist aus einem anderen Paket, nichtcom/example/data
, festgelegt in der Konfigurations-XML-Dateien.Hibernate aufruft
Class.isAssignableFrom()
, und wenn false zurückgegeben wird, wird es beendet, so bricht die Verbindung ab. Ich werde öffnen Sie ein ticket für Hibernate-Entwickler zu dieser Sache.InformationsquelleAutor Sergey Mikhanov