Hibernate - Angabe des Schemas

Diskutiere Hibernate - Angabe des Schemas im Data Tier Forum; Hi! Versuche gerade dass ich mittels Hibernate auf meine Postgres DB zugreife - leider klappt es noch nicht. 1) Habe ich entdeckt dass ich...

  1. y0dA
    y0dA Neues Mitglied
    Hi!

    Versuche gerade dass ich mittels Hibernate auf meine Postgres DB zugreife - leider klappt es noch nicht.

    1) Habe ich entdeckt dass ich folgenden Eintrag in meiner persistence.xml besitze welcher mir ja jedesmal die Tabellen neu anlegt. Was muss ich machen damit einfach die definierten Tabellen benutzt werden die ich schon per pgAdmin3 erstellt habe? Einfach den folgenden Eintrag aus der persistence.xml löschen bzw. auf validate setzen?
    Code (Java):

    <property name="hibernate.hbm2ddl.auto" value="create" /
     
    2) Werden zur Zeit die Tabellen unter dem Schema "public" angelegt, jedoch möchte ich ein anderes Schema benutzen (in welchen bereits meine per pgAdmin3 angelegten Tabellen "schlummern") - wie kann ich ein Schema bei Hibernate angeben?
    Bei openjpa ging es bspw. so:
    Code (Java):

    <property name="openjpa.jdbc.Schema" value="SCHEMA" />
     
     
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. gman
    gman Guest
    Zu 1.): Du solltest die Zeile löschen können. Hatte JPA2.0 bisher nur mit Eclipselink, aber ich denke
    Hibernate funktioniert ähnlich.

    Zu 2.): Sorry, k.A.
     
  4. y0dA
    y0dA Neues Mitglied
    Hatte ich mir schon gedacht, danke dir.

    Zu 2)
    Es kann doch nicht sein dass ich mit Hibernate bei jeder Entity bei der Table Annotation den Schemanamen dazuschreiben muss oder?

    **EDIT**
    Haben nun wie folgt die persistence.xml um "hibernate.default_schema" erweitert:
    Code (Java):

    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
        version="2.0">

        <persistence-unit name="mybudget" transaction-type="RESOURCE_LOCAL">
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
                <property name="hibernate.show_sql" value="false" />
                <property name="hibernate.format_sql" value="false" />
                <property name="hibernate.use_sql_comments" value="false" />
                <property name="hibernate.connection.autocommit" value="false" />
                <property name="hibernate.cache.use_query_cache" value="false" />
                <property name="hibernate.cache.use_second_level_cache"
                    value="false" />
                <!-- <property name="hibernate.hbm2ddl.auto" value="create-drop" /> -->  
                <property name="hibernate.default_schema" value="mybudgetschema"/>
            </properties>

        </persistence-unit>
    </persistence>
     
    Nur um folgende Exception zu bekommen:
    Code (Java):
     
    Irritierende Exception da ich bspw. im pgAdmin3 folgende Statement absetzen kann und die Tabelle gefunden wird:
    Code (Java):

    SELECT "ID", "FIRSTNAME", "LASTNAME"
      FROM mybudgetschema."PERSON";
     
    Warum klappt
    Code (Java):
                <property name="hibernate.default_schema" value="mybudgetschema"/>
    nicht? Bzw. warum wird das Schema nicht erkannt obwohl es tatsächlich existiert?
     
    Zuletzt bearbeitet: 14. Nov. 2010
  5. mvitz
    mvitz Aktives Mitglied
  6. y0dA
    y0dA Neues Mitglied
  7. mvitz
    mvitz Aktives Mitglied
    jdbc:postgresql://localhost:5432/andreak?schema=myschema

    Re: Schema in connection URL

    (Ich selber nutze kein Postgres und hab das jetzt auch nur gegoogled.)
     
  8. nocturn
    nocturn Neues Mitglied
    Also bei mir muss gefrickelt werden.


    CREATE TABLE "default"."language" (
    "language_id" INT, PRIMARY KEY ("language_id"));

    Mit

    @Entity
    @Table(name= "language")
    @AccessType("property")
    @SuppressWarnings({"unused", "serial"})
    public class Language{
    ...
    }

    Ergab:
    select this_.language_id as language1_3_0_ from default.language_translation
    und den Fehler:
    org.hibernate.exception.SQLGrammarException: could not extract ResultSet
    Caused by: org.postgresql.util.PSQLException: FEHLER: Syntaxfehler bei `default'

    Also wird Benötigt
    c.setProperty(Environment.DEFAULT_SCHEMA, "\"default\"");

    Dann klappts. Kurios!
     
    Zuletzt bearbeitet: 27. Jan. 2015
Die Seite wird geladen...

Hibernate - Angabe des Schemas - Ähnliche Themen

Java Object mit Hibernate in MySQL abspeichern
Java Object mit Hibernate in MySQL abspeichern im Forum Datenbankprogrammierung
Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank
Eclipse: JBoss Hibernate Tool: Kein Zugriff auf Datenbank im Forum Datenbankprogrammierung
JpaRepositories & Hibernate: ungewolltes trim() in findBy
JpaRepositories & Hibernate: ungewolltes trim() in findBy im Forum Datenbankprogrammierung
hibernate annotation
hibernate annotation im Forum Java Basics - Anfänger-Themen
hibernate: string vs setparameter
hibernate: string vs setparameter im Forum Java Basics - Anfänger-Themen
Thema: Hibernate - Angabe des Schemas