mapping-file für hibernate zum Überschreiben der Annotationen

Diskutiere mapping-file für hibernate zum Überschreiben der Annotationen im Data Tier Forum; Für EclipseLink kann man Annotationen durch den Einsatz eines "mapping-file" überschreiben. Das funktioniert bei mir. Ersetze ich die persistence...

  1. Raphalon
    Raphalon Neues Mitglied
    Für EclipseLink kann man Annotationen durch den Einsatz eines "mapping-file" überschreiben. Das funktioniert bei mir. Ersetze ich die persistence unit in meinem Beispiel aber durch eine für Hibernate (Ersetzen des Providers und der eclipselink-Properties), dann wird das mapping-file wohl gelesen, aber nicht mehr verwendet (habe in der Entität einen SequenceGenerator und im mapping-file einen table-generator), sondern nur die Annotationen. Warum? Was muss man tun, damit das mapping-file von Hibernate auch verwendet wird? Laut einer älteren Hibernate-Doku sollte das gehen. In der aktuellen Doku finde ich nichts zu diesem Thema.
    [XML]<?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" 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_1_0.xsd">
    <persistence-unit name="CarServiceEclipselink" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <mapping-file>META-INF/derby-overrides.xml</mapping-file>
    <class>de.jpa.cert.domain.Car</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
    <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/BaseDB;create=true"/>
    <property name="javax.persistence.jdbc.user" value="APP"/>
    <property name="javax.persistence.jdbc.password" value="APP"/>
    <property name="eclipselink.target-database" value="Derby"/>
    <property name="eclipselink.logging.level" value="ALL"/>
    <property name="eclipselink.ddl-generation" value="drop-and-create-tables"/>
    <property name="eclipselink.ddl-generation.output-mode" value="database"/>
    <property name="eclipselink.debug" value="ALL"/>
    <property name="eclipselink.weaving" value="static"/>
    <property name="eclipselink.logging.level.sql" value="ALL"/>
    <property name="eclipselink.logging.level.cache" value="ALL"/>
    </properties>
    </persistence-unit>
    </persistence>[/XML]
     
  2. Vielleicht hilft dir das kostenlose Training weiter --> (hier klicken)
  3. maki
    maki Guest
    EclipseLink funzt doch, zeig soch mal die nicht-funktionierende Hibernate Konfiguration ;)
     
  4. KSG9|sebastian
    KSG9|sebastian Aktives Mitglied
  5. Raphalon
    Raphalon Neues Mitglied
    Eigentlich müsste meine Konfig der Doku entsprechen. Hier die persistence.xml und die derby-overrides.xml
    [XML]<?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" 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_1_0.xsd">

    <persistence-unit name="CarService" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>META-INF/derby-overrides.xml</mapping-file>
    <class>de.jpa.cert.domain.Car</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
    <property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.ClientDriver"/>
    <property name="javax.persistence.jdbc.url" value="jdbc:derby://localhost:1527/BaseDB;create=true"/>
    <property name="javax.persistence.jdbc.user" value="APP"/>
    <property name="javax.persistence.jdbc.password" value="APP"/>
    <property name="hibernate.hbm2ddl.auto" value="create" />
    <property name="hibernate.show_sql" value="true" />
    <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyTenSevenDialect"/>
    </properties>
    </persistence-unit>
    </persistence>[/XML]
    [XML]<?xml version="1.0" encoding="UTF-8"?>
    <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
    http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
    version="2.0">
    <entity class="de.jpa.cert.domain.Car">
    <attributes>
    <id name="id">
    <generated-value generator="CarIdGen" strategy="TABLE" />
    <table-generator name="CarIdGen" table="CAR_ID_GENERATOR" pk-column-name="PK" value-column-name="AID" allocation-size="1" initial-value="1" pk-column-value="1" />
    </id>
    </attributes>
    </entity>
    </entity-mappings>[/XML]
     
  6. Raphalon
    Raphalon Neues Mitglied
    Habt Ihr mir noch Tips? Habe es doch entsprechend der Doku umgesetzt.
     
  7. KSG9|sebastian
    KSG9|sebastian Aktives Mitglied
    Wird die override-xml auch von Hibernate verwendet bzw im Classpath gefunden? Schalte mal das Hibernate-Logging für die betroffenen Klassen hoch.
     
  8. Raphalon
    Raphalon Neues Mitglied
    Ja, die override-xml wird gefunden. Hier der entsprechende Teil des Logging:
    Code (Java):
    04.02.2013 18:26:41 org.hibernate.annotations.common.Version <clinit>
    INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
    04.02.2013 18:26:41 org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {4.1.9.Final}
    04.02.2013 18:26:41 org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    04.02.2013 18:26:41 org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: HHH000021: Bytecode provider name : javassist
    04.02.2013 18:26:43 org.hibernate.cfg.Configuration addResource
    INFO: HHH000221: Reading mappings from resource: META-INF/derby-overrides.xml <<<<<<<<<<
    04.02.2013 18:26:43 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
    04.02.2013 18:26:43 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    INFO: HHH000115: Hibernate connection pool size: 20
    04.02.2013 18:26:43 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    INFO: HHH000006: Autocommit mode: true
    04.02.2013 18:26:43 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    INFO: HHH000401: using driver [org.apache.derby.jdbc.ClientDriver] at URL [jdbc:derby://localhost:1527/BasementGarageDB;create=true]
    04.02.2013 18:26:43 org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
    INFO: HHH000046: Connection properties: {user=APP, password=****, autocommit=true, release_mode=auto}
    04.02.2013 18:26:44 org.hibernate.dialect.Dialect <init>
    INFO: HHH000400: Using dialect: org.hibernate.dialect.DerbyTenSevenDialect
    04.02.2013 18:26:45 org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
    INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
    04.02.2013 18:26:45 org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
    INFO: HHH000397: Using ASTQueryTranslatorFactory
    04.02.2013 18:26:45 org.hibernate.tool.hbm2ddl.SchemaExport execute
    INFO: HHH000227: Running hbm2ddl schema export
     
  9. Raphalon
    Raphalon Neues Mitglied
    Habe eine mini-App erstellt (JavaSE). Einfach mit
    Code (Java):
    mvn clean install assembly:single
    kompilieren und dann mittels
    Code (Java):
    java -jar target/Overwrite-jar-with-dependencies.jar
    ausführen. Es sollte natürlich ein Derby-Server laufen.
    Über weitere Hinweise bzgl. des von Hibernate nicht verarbeitenden Overwrites wäre ich dankbar.
     

    Anhänge:

  10. Schau dir jetzt hier den Kurs an und lerne Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)
Die Seite wird geladen...

mapping-file für hibernate zum Überschreiben der Annotationen - Ähnliche Themen

Hibernate Mapping-File vs. Annotations
Hibernate Mapping-File vs. Annotations im Forum Data Tier
MySQL auf Ubuntu 16.04 für extern erreichbar machen
MySQL auf Ubuntu 16.04 für extern erreichbar machen im Forum Plauderecke
Konstruktor für "Vier Gewinnt"
Konstruktor für "Vier Gewinnt" im Forum AWT, Swing, JavaFX & SWT
Zeitstempel für Sensordaten bekommen
Zeitstempel für Sensordaten bekommen im Forum Mobile Geräte
PdfViewer für JavaFX Anwendung
PdfViewer für JavaFX Anwendung im Forum AWT, Swing, JavaFX & SWT
Thema: mapping-file für hibernate zum Überschreiben der Annotationen