# JPA und Klasse "User"



## fsicher (17. Jun 2011)

Habe überaschend Probleme mit der Klasse bekommen, die als _Entity _markiert wird und *User *heisst:


```
@Entity
public class User {
	@Id
	@GeneratedValue
	private int id;
	private String firstName;

	public User() {

	}

	public User(String firstName) {
		this.firstName = firstName;
	}

	public int getId() {
		return id;
	}

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

	public String getFirstName() {
		return firstName;
	}

	public void setFirstName(String firstName) {
		this.firstName = firstName;
	}

}
```

Bei der Db-Shema-Generierung wird ein "syntaxfehler" bei der Tabelle "User" gemeldet. Nach langem Kontrollieren und Probieren habe ich den Namen der Klasse in AppUser geändert: es lief einwandfrei. 

Habe die Klasse wieder in "User" umbenannt und getestet: ohne Erfolg. Der gleiche Fehler ist wieder da. Anschleissend habe ich die Klasse in "Benutzer" umbenannt und es lief wieder gut. 

Die Fehlermeldung sieht wie folgt aus:
[XML]
3869 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - Unsuccessful: create table User (id int4 not null, firstName varchar(255), primary key (id))
3869 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaExport - FEHLER: Syntaxfehler bei »User«
  Position: 14
[/XML]

Die restlichen Tabellen werden ansonsten erstellt und die zugehörigen Tests auch erfolgreich ausgeführt. 

Kann es wirklich sein, dass der Klassenname "User" nicht erlaubt ist (arbeite mit Hibernate als JPA-Provider)? Oder, sieht jemand evtl., wo das Problem / der Fehler ist?

Danke.


----------



## maki (17. Jun 2011)

User, left, right, etc. pp. sind begriffe, die meist schon reserviert sind von SQL bzw. der DB.

Musst explizit Tabellennamen vergeben, u.U. in Hochkommas falls du wirklich eine "User" tabelle willst, ist aber nciht so dolle falls doch mal SQL Statement manuell geschrieben werden müssen.

Nach und nach wirst du in deiner Userklasse immer mehr JPA Annotationen verwenden (column, table, etc. pp.), überlege dir doch mal ob es Sinn ergeben würde, manche dieser Konfigurationen, die nur die DB betrifft, in die orm.xml auszulagern.


----------



## fsicher (17. Jun 2011)

Vielen Dank. 
Ich versuche ohne orm.xml auszukommen und werde die Klasse halt anders taufen müssen ...


----------



## maki (17. Jun 2011)

fsicher hat gesagt.:


> Vielen Dank.
> Ich versuche ohne orm.xml auszukommen und werde die Klasse halt anders taufen müssen ...


Ob das eine gute Idee ist?
Die Fachklassen sollte man nicht wegen technischen Problemen umbennen müssen imho, ich komme auch sehr gut ohne Annotationen aus, sogar besser als mit, eclipselink-orm.xml bringt mir mehr 

Je nach DB unterscheiden sich die reservierten Wörter auch noch...


----------

