# Hibernate CreateQuery ohne Result



## delphiking1980 (21. Nov 2012)

Hallo,

ich habe eine Apache Derby Datenbank

und dort eine Tabelle ,"Aufgabe" nun möchte ich diese Tabelle mit folgendem Code abfragen :


```
SessionFactory sessions = new Configuration().configure().buildSessionFactory();
Session session = sessions.openSession();
Transaction myTransaction = session.beginTransaction();
myTransaction=session.beginTransaction();
List result = session.createQuery("from Aufgabe").list();
myTransaction.commit();
System.out.println(result);
session.close();
```

nur leider bleibt meine Liste leer.

Meine Hibernate Konfiguration :
[XML]
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>
      <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.EmbeddedDriver</property>
      <property name="hibernate.connection.url">jdbc:derby:/01_Java/07_Workspace_Juno/BOrg/database;create=true</property>
      <property name="hibernate.connection.username">username</property>
      <property name="hibernate.connection.password">password</property>
      <property name="hibernate.connection.pool_size">10</property>
      <property name="show_sql">true</property>
      <property name="dialect">org.hibernate.dialect.DerbyDialect</property>
      <property name="hibernate.hbm2ddl.auto">update</property>
      <!-- Mapping files -->
       <mapping resource="de/borg/database/entitys/Aufgabe.hbm.xml"/>
</session-factory>
</hibernate-configuration>
[/XML]

Mein Mapping, 
(die Tabelle Aufgabe enthält mehr Spalten als nur ID nur das sollte erstmal reichen. Die Tabellen möchte ich mir später durch ANT erstellen lassen.)

[XML]
<?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="de.database.entitys.Aufgabe" table="Aufgabe">
<id type="int" column="id">
<generator class="native" />
</id>
<!-- <property name="beschreibung" column="beschreibung" type="String"/> -->
</class>
</hibernate-mapping>
[/XML]


----------



## achillesat (21. Nov 2012)

delphiking1980 hat gesagt.:


> ```
> SessionFactory sessions = new Configuration().configure().buildSessionFactory();
> Session session = sessions.openSession();
> Transaction myTransaction = session.beginTransaction();
> ...




Muss du nicht in dem createQuery noch einen SELECT * vorher angeben?


----------



## delphiking1980 (21. Nov 2012)

Danke für deine Antwort, aber da muss ich dich entäuschen der macht eine vernünftige Query daraus. Auf der Konsole sieht man die fertige query.


----------



## SlaterB (21. Nov 2012)

etwas deutlicher wäre noch, nun tatsächlich mit Select,
Select count(*) from Aufgabe,
uniqueResult(), auszugeben,
wenn das 0 ist, dann ist wohl ziemlich sicher dass bei Hibernate alles klappt, aber eben die Tabelle als leer angenommen wird,

das ist ja immer möglich, hat jedenfalls nichts mit deinem Code/ deiner hibernate-configuration zu tun,
warum sollte die Tabelle nicht leer sein?
wie ist dazu der Stand der Fakten?

-----

solange du nur eine Abfrage stellst kannst du dir die Transaction eigentlich sparen,
aber du könntest ein Aufgabe-Objekt per Hibernate speichern, das wäre auch ein guter Test, dann müsste die Abfrage doch was liefern?
zur allgemeinen Frage, warum du vielleicht an anderer Stelle eine befüllte Tabelle siehst, muss das freilich nicht unbedingt etwas beitragen


----------



## delphiking1980 (21. Nov 2012)

Wenn ich mich zur Datenbank mit ij verbinde dann bekomme ich eine Zeile angezeigt. (es ist auch nur eine vorhanden)

Wenn ich jedoch mit meiner Anwendung darauf gehe bekomme ich mit Hibernate nix angezeigt jedoch mit einer JDBC Verbidnung und einem selbst gestricktem Statement bekomme ich meine Ausgabe bzw mein ResultSet.

Sehr komisch.


----------



## KSG9|sebastian (21. Nov 2012)

Dann schau mal welchen Query Hibernate ausführt (Logging hochdrehen..siehe Konfiguration/Dokumentation von Hibernate).


----------



## SlaterB (21. Nov 2012)

was kommt überhaupt an Ausgabe? eine leere Liste ist "[]", 
wenn nichts kommt ist ja nicht mal zu vermuten, dass der Code überhaupt ausgeführt wird

bringt das SELECT count(*) die 0?
kannst du mit Transaction einfügen, falls das nicht ein noch unbekannter Schritt für dich ist?
wenn mit Transaction commit gespeichert, ist der Eintrag dann mit neuer Session im gleichen Programm noch da?
und wenn du das Programm neustartest wieder erstmal leer oder nicht?
im letzteren Fall wäre interessant was dann die anderen Tools anzeigen, auch JDBC nebenher

falls dir alle Mittel wie INSERT noch eher unbekannt sind, ist es natürlich schwer,
immer ungünstig wenn der Anfang nicht funktioniert

falls du aber schon etwas Wissen hast, wären mehr Tests hilfreich, statt nur Bedauern zu formulieren

falls sich nichts neues ergibt bleibt mir allerdings vielleicht auch nichts anderes übrig , 
eine richtige Idee habe ich nicht, kenne gerade immer diese komischen Datenbanken wenig

wobei:

```
<property name="hibernate.connection.url">jdbc:derby:D:/01_Java/07_Workspace_Juno/BOrg/database;create=true</property>
```
kann eigentlich das 'create=true' ein Problem sein, legt das eine neue Datenbank an?


----------



## delphiking1980 (21. Nov 2012)

Meine Lösung ist ziemlich simpel ich habe in meiner Hibernate Konfig einen Benutzer und Passwort eingegeben wenn ich dieses entferne klappt es.:lol:


----------

