# Hibernate: Reverse Enigneering - kein Mapping von Beziehungen



## t.stein (16. Jul 2010)

Hallo Leute, ich will mit Hilfe der Hibernate-Tools ein Reverse Enigneering von DB-Tabellen zum Java-Code mache.

Dazu haben ich z.B folgende Tabellen erstellt. 


```
CREATE TABLE USER(
USERID INT NOT NULL DEFAULT '0',
NAME VARCHAR(100) NOT NULL,
PASSWORD VARCHAR(100) NOT NULL,
EMAIL VARCHAR(100) NOT NULL,
PRIMARY KEY (USERID),
FOREIGN KEY (USERID) REFERENCES SEECLIENT (USERID)
);
```


```
CREATE TABLE SEECLIENT(
ID INT NOT NULL DEFAULT '0',
USERID INT NOT NULL,
CLIENTID INT NOT NULL,
PRIMARY KEY (ID),
);
```

Leider fehlen die Mapping-Annotations? mapped by ... 
@ID, etc sind alle da. Was mache ich falsch?


----------



## y0dA (16. Jul 2010)

Vllt. wäre es sinnvoller den Javacode zu posten anstatt der SQLs.


----------



## t.stein (16. Jul 2010)

```
// default package
// Generated 16-Jul-2010 12:12:24 by Hibernate Tools 3.2.4.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * User generated by hbm2java
 */
@Entity
@Table(name = "USER", catalog = "EdicatDB")
public class HsagUser implements java.io.Serializable {

	private int userid;
	private String name;
	private String password;
	private String email;

	public User() {
	}

	public User(int userid, String name, String password, String email) {
		this.userid = userid;
		this.name = name;
		this.password = password;
		this.email = email;
	}

	@Id
	@Column(name = "USERID", unique = true, nullable = false)
	public int getUserid() {
		return this.userid;
	}

	public void setUserid(int userid) {
		this.userid = userid;
	}

	@Column(name = "NAME", nullable = false, length = 100)
	public String getName() {
		return this.name;
	}

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

	@Column(name = "PASSWORD", nullable = false, length = 100)
	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	@Column(name = "EMAIL", nullable = false, length = 100)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

}
```



```
// default package
// Generated 16-Jul-2010 12:12:24 by Hibernate Tools 3.2.4.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * Seeclient generated by hbm2java
 */
@Entity
@Table(name = "SEECLIENT", catalog = "EdicatDB")
public class HsagSeeclient implements java.io.Serializable {

	private int id;
	private int userid;
	private int clientid;

	public Seeclient() {
	}

	public Seeclient(int id, int userid, int clientid) {
		this.id = id;
		this.userid = userid;
		this.clientid = clientid;
	}

	@Id
	@Column(name = "ID", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

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

	@Column(name = "USERID", nullable = false)
	public int getUserid() {
		return this.userid;
	}

	public void setUserid(int userid) {
		this.userid = userid;
	}

	@Column(name = "CLIENTID", nullable = false)
	public int getClientid() {
		return this.clientid;
	}

	public void setClientid(int clientid) {
		this.clientid = clientid;
	}

}
```


----------



## t.stein (19. Jul 2010)

keiner eine Ahnung?


----------



## maki (19. Jul 2010)

Stehen denn die Beziehungen wirklich in der DB?
Bei MySQL mit (My-)ISAM Tabellen ist das zB. nicht der Fall.


----------



## SlaterB (19. Jul 2010)

gibt es für diese 'Hibernate Tools' keine Anleitung mit Beispielen, was wie umgewandelt wird?


----------



## t.stein (19. Jul 2010)

Hey, danke für die Antwort.
Ich bin nach dieser Anleitung vorgegangen. Das funktioniert auch wunderbar. Leider werden die Beziehungen zwischen den Tabellen nicht aufgelöst. Muss ich das vielleicht selbst machen?


----------



## t.stein (19. Jul 2010)

@maki Super Tipp. Wenn ich die Tabellen im SQL mit der Option 

*ENGINE=INNODB; * anlege, werden die FK-Informationen mitgespeichert und die Beziehungen können beim Reverse Engineering aufgelöst werden.


----------



## maki (19. Jul 2010)

t.stein hat gesagt.:


> @maki Super Tipp. Wenn ich die Tabellen im SQL mit der Option
> 
> *ENGINE=INNODB; * anlege, werden die FK-Informationen mitgespeichert und die Beziehungen können beim Reverse Engineering aufgelöst werden.


Ja, wie gesagt, MyISAM Tabellen enthalten keine Relationen, da gibt es nämlich keine, genausowenig wie Transaktionen, alles in allem sollte man MyISAM Tabellen meiden


----------

