# Hibernate id generator und MySQL



## siba (28. Feb 2008)

Hallo!

Ich versuche mich gerade mit den id generatoren in Hibernate. Ich habe es mit native versucht und die entsprechende Tabellenspalte auf INT Auto_increment gesetzt. Nun bringt er mir die Meldung

org.hibernate.HibernateException: The database returned no natively generated identity value

Was mache ich verkehrt?


----------



## maki (28. Feb 2008)

> Ich habe es mit native versucht und die entsprechende Tabellenspalte auf INT Auto_increment gesetzt.


Wo?

Ich hoffe in der .hbm.xml Datei oder per Annotation und NICHT direkt in mysql!


----------



## siba (28. Feb 2008)

Ich habe es wie folgt gemacht:

Form.hbm.xml


```
<hibernate-mapping package="Daten">
    <class name="Form" >
	<id name="id" >  
	<column name="formId"/>
	    <generator class="native"/>
	</id>
	<property name="name"/>
    </class>
</hibernate-mapping>
```


```
CREATE TABLE Form(formId INT AUTO_INCREMENT, Name VARCHAR(30),
PRIMARY KEY (formaId));
```


Wo hätte ich das AUTO_INCREMENT hinschreiben sollen?


----------



## maki (28. Feb 2008)

Du lässt das Schema aber schon von Hibernate generieren?


----------



## siba (29. Feb 2008)

Ich habe versucht das ganze automatisch generieren zu lassen, erst dann habe ich das Datenbankschema vorgegeben. Ich hatte immer folgende Fehlermeldung:

Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource Model/Form.hbm.xml

Untenstehend alle Dokumente, die ich angelegt habe, was fehlt? Meine JSPs und Servlets und DAOs habe ich weggelassen, an denen liegt es wahrscheinlich nicht?

Meine hibernate.cfg.xml sieht folgendermaßen aus:


```
<?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="connection.driver_class">
	    com.mysql.jdbc.Driver
	</property>
	
	<property name="connection.url">
	    jdbc:mysql://localhost:3306/formtable
	</property>
	
	<property name="connection.username">
	    root
	</property>
	
	<property name="connection.password">
	    admin
	</property>
	
	
	<property name="connection.pool_size">
	    1
	</property>
	
	
	<property name="dialect">
	    org.hibernate.dialect.MySQLDialect
	</property>
	
	
	<property name="current_session_context_class">
	    thread
	</property>
	
	<property name="transaction.factory_class">
	    org.hibernate.transaction.JDBCTransactionFactory
	</property>
	
	
	<property name="cache.provider_class">
	    org.hibernate.cache.HashtableCacheProvider
	</property>
	
	
	<property name="show_sql">
	    true
	</property>
	
	
	<property name="hibernate.hbm2ddl.auto">
	    create
	</property>
	
	<mapping resource="Model/Form.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
```


Meine Klasse:

```
package Model;

import java.io.Serializable;


public class Form implements Serializable{
    
    private Integer id;
    private String name;

  
     public Integer getId() {
	return id;
    }

    public void setId(Integer id) {
	this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
   
}
```

Meine form.hbm.xml:


```
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="Daten">
    <class name="Form" >
	<id name="id" >  
	<column name="formId"/>
	    <generator class="native"/>
	</id>
	<property name="name"/>
	
    </class>
</hibernate-mapping>
```

Meine Datenbank:


```
CREATE Database formtable;

USE formtable;
```


----------

