# Hibernate + H2



## y0dA (11. Aug 2007)

Hi!
Hat schon mal jemand von euch mit Hibernate und H2 Database gearbeitet?

Wie ist hierbei die hibernate.config zu erstellen (kann H2 Dialect nicht finden)?

mfg


----------



## semi (11. Aug 2007)

y0dA hat gesagt.:
			
		

> Hi!
> Hat schon mal jemand von euch mit Hibernate und H2 Database gearbeitet?
> 
> Wie ist hierbei die hibernate.config zu erstellen (kann H2 Dialect nicht finden)?
> ...


Dann hast du eine ältere Version von Hibernate. In der Version 3.2 ist H2Dialect dabei.
Im Sourcecode von H2 ist H2Dialect vorhanden, du kannst es mal compilieren oder auf Hibernate 3.2 umsteigen.
(siehe H2\src\tools\org\hibernate\dialect\H2Dialect.java.txt)

Alternativ kannst du auch HSQLDialect verwenden.


----------



## y0dA (11. Aug 2007)

ahh muss ich ma checken - danke.


----------



## semi (11. Aug 2007)

y0dA hat gesagt.:
			
		

> ahh muss ich ma checken - danke.


HSQLDialect scheint auch besser zu sein, da LIMIT im H2Dialect nicht korrekt funktioniert.


----------



## y0dA (11. Aug 2007)

hsqldialect funzt auch? k nehm ich den


----------



## y0dA (29. Aug 2007)

Hi!
Kam erst jetzt dazu obiges zu testen..
Leider funktioniert nach wie vor nichts bezüglich db connect.

Ich bekomme jedesmal wenn ich die hibernate config öffnen möchte, eine nullpointerexception meldung von eclipse (grund wird nicht aufgeführt).

Ich benutze das neueste myeclipse (6.0.0 GA) sowie ein hiberante plugin(tools.hibernate.org).


Ich kann ohne Probleme mittels dem eclipse db browser connecten, nur mittels hibernate klappt es schlichtweg nicht.

könnt ihr euch bitte mal meine hibernate config betreffend etwaiger fehler ansehen:

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
		"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
		"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
	<property name="hibernate.connection.driver_class">
		org.hsqldb.jdbcDriver
	</property>
	<property name="hibernate.connection.url">jdbc:h2:~/cati</property>
	<property name="hibernate.connection.username">sa</property>
	<property name="hibernate.dialect">
		org.hibernate.dialect.H2Dialect
	</property>
	<property name="myeclipse.connection.profile">H2</property>
	<property name="connection.url">jdbc:h2:~/cati</property>
	<property name="connection.username">sa</property>
	<property name="connection.password"></property>
	<property name="connection.driver_class">org.h2.Driver</property>
	<property name="dialect"></property>
</session-factory>
</hibernate-configuration>
```


----------



## HoaX (29. Aug 2007)

sicher dass das verzeichnis ~ heißt? ich glaube nicht dass das aufgelöst wird. ansonsten wäre es sehr hilfreich wenn du die fehlermeldung verraten würdest,  "geht nicht" is keine tolle beschreibung.

ich hab hibernate+h2 mit h2dialect einwandfrei am laufen. limit hab ich noch nie gebraucht, und würde mich wundern wenn der fehler immernoch drin ist, weil der thomas müller is eigentlich auf zack ...


----------



## semi (1. Sep 2007)

In dem neuen Plugin brauchst du die Konfiguration nicht zu editieren/erstellen.
Seit der Version "Hibernate Tools 3.2.0.beta9" sind alle nötigen Einstellungen in einem Dialog verfügbar.






(siehe: http://www.hibernate.org/hib_docs/t...orthy/hibernate-eclipse-news-3.2.0.beta9.html)

Die Update Seite (für den Update Manager in Eclipse) ist die hier. Die aktuelle Version ist 3.2.0.beta10.
http://download.jboss.org/jbosside/updates/development

Von dem ganzen dort brauchst du nur die Hibernate Console. Den ganzen Rest von JBoss brauchst du dazu nicht.
Den Server kannst du im Server-View konfigurieren.

Nehme die folgenden Einstellungen vor

Name: Irgendein Name für die Konfiguration
Project: Dein Projekt, welches die persistence.xml enthält
Type: JPA (jdk 1.5+) wählen
Persistence unit: Name der Persistence Unit aus persistence.xml

und dann noch unter Classpath die h2.jar eintragen.

Eine Konfigurationsdatei, wie in dem Screenshot oben, brauchst du nicht anzugeben. Es ist auch bei JPA deaktiviert.

@Hoax
Im HSQLDialect kommt die Limit-Klausel direkt hinter SELECT, bei H2 hinter das ganze Statement, wie bei MySQL. 
Wenn man die Anzahl der Datensätze im HQL-Editor der Hibernate-Console einschränkt (z.B. max. 10), kommt es 
beim H2Dialect zu Fehlern.

org.h2.jdbc.JdbcSQLException: Unerlaubter Wert 2 für Parameter parameterIndex
Invalid value 2 for parameter parameterIndex [90008-56]

Beim HSQLDialect funktioniert es einwandfrei. Syntaktisch sind beide korrekt. Ich tippe auf einen Fehler in der 
Hibernate Console.


----------

