hibernate Frage zu configFile-Pfad und Groß/Kleinschreibung von Postgres-Tabellen

rtx05

Mitglied
Guten Morgen,

ich beschäftige mich seit ein paar tagen mit Hibernate und habe ein Problem mit dem Pfad der ConfigDatei, die ich ja mit

Java:
String configFile="/home/theUser/config/hibernate.cfg.xml"

AnnotationConfiguration().configure(configFile);

übergeben kann.

Nur wird die Datei nicht gefunden. I
ch weiß, dass es funktioniert, wenn ich die "hibernate.cfg.xml" irgendwo in der Packagestruktur ablege, und dann so referenziere: "de/mypackage/database/access/hibernate.cfg.xml".

Aber ich würde gerne die Config-Datei dann nicht im JAR haben wollen, sondern in einem config-Verzeichnis, wo man (als User), die Settings anpassen kann.

Geht dies irgendwie?


Ein weiteres Problem:

Ich habe eine Postgres Datenbank zum Einarbeiten mit der Tabelle "Test" (großes T!) und einer Spalte "name" Varchar(255)
und die passende (Entity-)Klasse dazu.

Java:
session.createQuery("Select t from Test as t");

funktioniert nicht.

Die Hibernate-Exception besagt: "relation test not found" (Auffällig ist, dass er die Relation test klein schreibt)

Ich habe in der Datenbank die Tabelle "Test" gelöscht und als "test" (klein) neu angelegt, und dann funktionert es!

Die eigentlichen Anwendung soll jedoch auf einer bereits bestehenden Datenbank mit > 100 Tabellen (Tabellennamen sind in Groß/Kleinschreibung angelegt).

Habe ich etwas vergessen zu konfigurieren?
 
G

Gast2

Gast
Zum zweiten:

Ich wüsste nicht das Postgres Casesenstiv ist was Tabellen und Spaltennamen angeht. Kurzer Test bei mir hat das bestätigt.

Und wenn es nicht wirklich zwingend nötig ist würde ich bei Postgres nicht VARCHAR nutzen sondern direkt "text"
 

rtx05

Mitglied
okay meine erste Frage, konnte ich auflösen

Es gibt

Java:
configure(File aFile)

die auch ausserhalb der Resourcenpfade referenziert


Java:
String configFile="/home/theUser/config/hibernate.cfg.xml" 
AnnotationConfiguration().configure(new File(configFile));

Bei mir unterscheidet PosgresSQL wohl case-sensitiv:

CREATE TABLE Test == CREATE TABLE test beides wird als Tabelle test angelegt

CREATE TABLE "Test" <> CREATE TABLE "test" => jeweils wie geschrieben.

Ob das Auswirkungen auf SQL-Statements hat - via JDBC abgesetzt - keine Ahnung.

Muss mal weitersuchen.
 
G

Gast2

Gast
CREATE TABLE Test == CREATE TABLE test beides wird als Tabelle test angelegt

CREATE TABLE "Test" <> CREATE TABLE "test" => jeweils wie geschrieben.

Das ist klar. Wenn du die Objektnamen in Anführungszeichen setzt ist das casesensitiv. Das ist Stanard und bei MySQL und Oracle auch so.
 

rtx05

Mitglied
Wie gesagt: die DB (und somit die Tabellen) sind schon existent (dies muss ich so übernehmen)

Wenn ich mir via pgAdminIII die CREATE - Skripte anschaue z.B. :
SQL:
CREATE TABLE "Kalender"
(
  "Datum" character(8),
  "WochenNr" character(2),
  "Wochentag" character(1),
  "Werktag" character(1),
  "Samstag" character(1),
  "Sonntag" character(1),
  "Feiertag" character(1),
  "Feiertags_Bezeichnung" character(30)
)
WITH (
  OIDS=FALSE
);

ist ja ersichtlich, dass hier case-sensitive Tabellen erzeugt wurden (ich nehme an der DB-Admin war sich dessen damals nicht bewußt - was mir auch nicht weiterhilft im Moment).

Auch direkte SELECT-Anweisungen via pgAdminIII unterscheiden in den Namen:

SQL:
SELECT * FROM kalender
SELECT * FROM Kalender
SELECT * FROM "kalender"

gibt folgendes aus


Code:
FEHLER:  Relation »kalender« existiert nicht
LINE 5: SELECT * FROM kalender

und

Code:
FEHLER:  Relation »kalender« existiert nicht
LINE 6: SELECT * FROM Kalender

und

Code:
FEHLER:  Relation »kalender« existiert nicht
LINE 6: SELECT * FROM "kalender"

Nur

SQL:
SELECT * FROM "Kalender"

ist korrekt.

Damit kann ich auch leben, aber ich weiß nicht wie ich den Name für Hibernate quotiere:

versucht habe ich schon:

Java:
session.createQuery("Select t from 'Test' as t");
session.createQuery("Select t from \"Test\" as t");

Hierzu bräuchte ich eine Aussage, ob dies irgendwie möglich ist und wenn ja wie!
 
Zuletzt bearbeitet:

mvitz

Top Contributor
Ohne jetzt der Hibernate Spezialist zu sein. In der HQL (Hibernate Query Language) beziehst du dich doch garnicht auf die Namen der Tabellen, sondern deiner Entitäten, d.h. heißt die Klasse Test so brauchst du im HQL-Query auch nur
Java:
session.createQuery("Select t from Test as t");

Was du dann allerdings benötigst, ist die Angabe des Tabellennamens bei deiner Entität über @Table
 

rtx05

Mitglied
hmm, ja danke für den Hinweis, ich habe auch gerade was gefunden in diese Richtung.

meine bestehende Entität:

Java:
@Entity
@Table(name="Test")
class Test {
...
}

hier muss wohl im Attribut name von @Table der Tabellenname in Backticks (`) gequotet werden.
Code:
@Table(name="[B]`[/B]Test[B]`[/B]")

Die Backticks werden wohl von Hibernate je nach SQL-Dialect in die richtigen Quotes, wie ", `, ' etc. umgesetzt.

Werde dies heute Nachmittag testen.
 
Zuletzt bearbeitet:
G

Gast2

Gast
ist ja ersichtlich, dass hier case-sensitive Tabellen erzeugt wurden (ich nehme an der DB-Admin war sich dessen damals nicht bewußt - was mir auch nicht weiterhilft im Moment).

Hmm das ist echt doof - dafür gehört der DBA geprügelt wenn er das "aus Versehen" gemacht hat. Ist meiner Meinung nach ein ganz schlechter Stil und ich würd das echt nicht so lassen.

SQL:
ALTER TABLE "Kalender" RENAME TO Kalender;
ALTER TABLE kalendar RENAME COLUMN "Datum" TO datum;
...

SQL:
SELECT * FROM kalender

Dazu würd ich die Schmeaobjekteaus dem Katalog ziehen und automatisch einmal ein Skript drüberrappeln lassen das alle Tabellen und Spalten in nicht case sensitive Objekte umbenennt. Das ist vielleicht eine Stunde Arbeit aber spart eine Menge Ärger in der Zukunft.

Überleg mal wie lange alleine du jetzt gebraucht hast um Nachforschungen anzustellen... kannst ja mal in Arbeitsstunden ausrechnen und damit im schlimmsten Fall deinem Chef sagen das jeder neue Entwickler bei einem neuen Feature auch nochmal etliche Stunden versenken wird ;)
 

rtx05

Mitglied
Nur der Vollständigkeit halber, das mit den Quotes funktioniert

@fassy:

Ja das mit den Namen ist schon doof - muss abklären - ob andere Anwendung von der Namensumstellung negativ betroffen wären.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Psypsy Hibernate / JPA OneToOne MappedBy Frage Datenbankprogrammierung 2
L PostgreSQL Hibernate-Frage Datenbankprogrammierung 2
V Frage zu Hibernate-Mapping Datenbankprogrammierung 11
S Hibernate - spezielle Frage, n zu n Beziehung Datenbankprogrammierung 11
G Frage zu Hibernate und M:N Beziehung Datenbankprogrammierung 9
B Hibernate mit MySql - Verständniss Frage Datenbankprogrammierung 8
torresbig MySQL hibernate - could not resolve entity class ... (Datenbank Anfänger) Datenbankprogrammierung 19
I Hibernate Predicate mit IN Clause "Unaware how to convert value to requested type" Datenbankprogrammierung 0
T org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: ..., could not initialize proxy - no Session Datenbankprogrammierung 5
T Realisierungsvorschläge Hibernate SQL Datenbankprogrammierung 1
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Tabellen-Erzeugung via Hibernate ignoriert 'CascadeType' settings Datenbankprogrammierung 1
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Mysql Views und Hibernate Caching Datenbankprogrammierung 4
damike84 Hibernate: persistieren eines Graphen Datenbankprogrammierung 2
N Hibernate Entitäten bei Selects aus 2 Tabellen Datenbankprogrammierung 7
OnDemand Hibernate Realationen Datenbankprogrammierung 7
OnDemand Hibernate ManyToOne Datenbankprogrammierung 5
D Hibernate oneToMany Syntaxfehler Datenbankprogrammierung 3
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
D hibernate mit postgreSQL Datenbankprogrammierung 3
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
F Problem mit Hibernate c3p0 Datenbankprogrammierung 2
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
OnDemand Hibernate OneToMany ManyToOne Datenbankprogrammierung 61
J Hibernate One-To-One mit Where Klausel Datenbankprogrammierung 6
L hibernate.cfg.xml Could not parse configuration Datenbankprogrammierung 0
L H2 Hibernate definieren? Datenbankprogrammierung 1
T JPA Mapping Enum (hibernate 5) Datenbankprogrammierung 1
H In hibernate.cfg.xml schreiben und auslesen Datenbankprogrammierung 0
K Hibernate: Ein Fluch Datenbankprogrammierung 3
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
K Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank Datenbankprogrammierung 5
S JpaRepositories & Hibernate: ungewolltes trim() in findBy Datenbankprogrammierung 7
S MySQL hibernate exception: illegal state exception : entityManagerFactory is closed Datenbankprogrammierung 5
S Hibernate: Verschiedene Klassen zurückgeben. Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
O HSQLDB Hibernate Criteria Problem Datenbankprogrammierung 3
perlenfischer1984 Hibernate mit final members Datenbankprogrammierung 3
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
N Sqlite3 und Hibernate Datenbankprogrammierung 3
A Hibernate Cache leeren Datenbankprogrammierung 4
I MySQL Hibernate zu viele Queries Datenbankprogrammierung 2
Psypsy Hibernate / JPA erkennen von schon gespeicherten Objekten Datenbankprogrammierung 4
J Hibernate + DTOs - DTOs in DAOs verwenden? Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I MySQL Hibernate / MySQL alias in WHERE clause Datenbankprogrammierung 1
J Hibernate + HSQL embedded Datenbankprogrammierung 2
P Hibernate Einstieg Datenbankprogrammierung 5
C Hibernate und createQuery Datenbankprogrammierung 2
V kennt jemand empfehlenswerte online tutorials zur Hibernate ? gerne auch englisch. Datenbankprogrammierung 4
G H2 Hibernate - wie joins machen Datenbankprogrammierung 1
D Hibernate: Zustand eines Objekts erkennen? Datenbankprogrammierung 0
D Unterschiede Hibernate Vs. Java Persistence API Datenbankprogrammierung 8
I Hibernate / JPA Index hinzufügen Datenbankprogrammierung 1
X Hibernate Cache Verständnisproblem Datenbankprogrammierung 0
T Hibernate und inner class Datenbankprogrammierung 0
K n:m Tabellen mit Hibernate erstellen Datenbankprogrammierung 1
T Hibernate DAO gute Tutorials/Bücher gesucht Datenbankprogrammierung 0
C Hibernate: could not resolve property Datenbankprogrammierung 1
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
M Hibernate - Save Child wenn nötig Datenbankprogrammierung 10
M DAO's + Hibernate Theorie Datenbankprogrammierung 4
T Hibernate, HSQLDB und UNIQUE Datenbankprogrammierung 2
F Hibernate - verschiedene Schemen Datenbankprogrammierung 7
D Hibernate SaveOrUpdate Exception Datenbankprogrammierung 2
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
E MySQL Hibernate mit JaxWS führt zu LazyInitialization Exception Datenbankprogrammierung 8
L Einarbeitung in Hibernate -> wenn gute SQL Kenntnisse vorhanden? Datenbankprogrammierung 2
B DB2 Hibernate findet Datenbank nicht Datenbankprogrammierung 18
K JPA / Hibernate Annotations Datenbankprogrammierung 4
M JPA / Hibernate mit Postgres DB Datenbankprogrammierung 3
P JSF + H2 + TomEE + Hibernate/JPA Datenbank wird nicht angelegt Datenbankprogrammierung 3
E MySQL Hibernate ( Anfänger ) Datenbankprogrammierung 3
P Lazy-Fetchig und Session-Problem mit Hibernate Datenbankprogrammierung 4
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
C Hibernate ManyToMany zusammengesetzter Primärschlüssel, problem. Datenbankprogrammierung 3
P Oracle Hibernate - Oracle-VarChar-Index wird nicht genutzt Datenbankprogrammierung 3
M Hibernate Foreign Key definieren Datenbankprogrammierung 4
M Abstrakte Klassen Hibernate Datenbankprogrammierung 4
D Mit Hibernate (mit Annotation) auf Views zugreifen Datenbankprogrammierung 2
M [Hibernate]Abgleich eines lokalen Objekts mit dem Zustand aus der Datenbank. Datenbankprogrammierung 3
P Mit Hibernate mehrere Datensätze löschen Datenbankprogrammierung 7
P Probleme mit meinem 1. Hibernate Beispiel Datenbankprogrammierung 3
P erste Schritte mit Hibernate Datenbankprogrammierung 3
V Hibernate Interfaces von anderem Projekt Datenbankprogrammierung 2
J MySQL Datenbank konfigurieren, JDBC, MySQL oder Hibernate Datenbankprogrammierung 2
B Hibernate und portierbare Datenbank Datenbankprogrammierung 3
qwerqer [Hibernate] Mappingvarianten Datenbankprogrammierung 2
lumo Teneo Hibernate & JPA Datenbankprogrammierung 15
Z JPA mit Hibernate - Unable to build EntityManagerFactory Datenbankprogrammierung 7
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
K Hibernate vs. JDBC Datenbankprogrammierung 4
J Hibernate Info 593 ? Datenbankprogrammierung 4
J Erstellen der SessionFactory in Hibernate 4.1 Datenbankprogrammierung 2
X MySQL Hibernate: Massenupdate auf unbekannte Tabelle Datenbankprogrammierung 4
N hibernate: datasource Datenbankprogrammierung 7
H MySQL Hibernate: Updaten vereinfachen Datenbankprogrammierung 2
T Hibernate Division zweier Summen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben