legacy db mit lustigen Spaltennamen per EntityManager find laden

dermoritz

Bekanntes Mitglied
ich habe mir aus einer vorhandenen DB-Tabelle eine "Entity"-Klasse gemacht (per NetBeans Codegenerator). Das Problem ist, das der Entitymanager bei find(tabelle.class, id) eine Abfrage generiert die sämtlich --> ` <-- vermissen lässt. In meinem speziellen Fall sind in den Spaltennamen unteranderem Leerzeichen, Umlaute und Sonderzeichen ('-'). Nun Frage ich mich wie ich den Entity-Manager dazu bewegen kann eine vernünftige Abfrage zu senden. Also eine die sämtliche Spalten und Tabellennamen in `` einschließt. (alle Tools die ich kenne, die Abfragen generieren machen das automatisch?!)

oder ist der generierte net-beans code unbrauchbar?
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 5909

Gast
1. hast du den richtigen dialect gewählt?
2. wie nutzt du den entityManager?
 

dermoritz

Bekanntes Mitglied
danke...
ok - was ist "dialect" in diesem Zusammenhang? Ich hab da nix gewählt und deshalb hab ich wahrscheinlich den default dialect.
Den Entity-Manager nutze ich eigentlich wie in all den Beispielen:
Code:
	public static void initEntityManager(){
		emf=Persistence.createEntityManagerFactory("para14_DB-Schnittstelle_PU");
		em=emf.createEntityManager();
	}
...
Code:
eintrag = em.find(tabelle.class, id);

Ich habe in zwischen bemerkt, das die alte Tabelle auch '/' in ihren Spaltennaemn hat - damit kommt der NetBeans Codegenerator gar nicht klar - der macht aus "Spalten / Name" zwei Attribute :-|.
Aber wenn cih den Entity-Manager schonmal dazu bewegen könnte alle Spaltennamen und Tabellennamen in `` zu verpacken wär das ein großer Fortschritt.
Wenn jemand noch Tips bezüglich der Codegenerierung hat (z.B. Auswahl nur einiger Attribute die gemappt werden sollen) oder andere Programme (der aus Eclipse funktioniert glaube ich nur mit einem JPA-Projekt und nicht mit Maven-Projekt :-() - immer her mit den Tips.
 

dermoritz

Bekanntes Mitglied
ich hatte schon etwas geggogelt zum Thema "dialect", aber eben nur Beispiele für Hibernate gefunden. Wie sieht denn das ganze mit JPA2.0 per EclipseLink aus? Leider hab ich dazu nirgends eine Doku gefunden.

Ich hab mal die entsprechende Tabelle durch den Eclipse Codegenerator gejagt, der baut fast noch größeren Mist - der Code kompiliert nicht: Eclipse macht aus "Spalten/Name"
Code:
@Column(name = ""Spalten/Name"")
Den Spaltennamen in Anführungszeichen zu setzen ist ja ne gute Idee, aber wenn die Escapezeichen vergessen werden bringts nicht so viel ;-).
Dadurch bin ich aber auf die Idee gekommen '\"' anstelle von '`' zu verwenden und das funktioniert! Es scheint also das der Persistenceprovider oder die Api die DB_Spezifischen anführungszeichen erkennt und durch diese zu ersetzen. Sonst würde es ja nicht funktionieren, oder?
Natürlich wäre es schön wenn automatisch DB-spezifische Anführungszeichen gesetzt würden (wie man das eben von jedem SQL-Generator gewöhnt ist), aber bis ich das mit dem Dialect raus hab (vorausgesetzt der macht genau das) funzt es so ganz gut.
 

Oben