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 dieser Kurs hier 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:

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
Raster für UML Klassendiagram in Papyrus
Raster für UML Klassendiagram in Papyrus im Forum IDEs und Tools
Suche Java-Programmierer/in für ein Spiel
Suche Java-Programmierer/in für ein Spiel im Forum Private Stellangebote und Stellensuche von Usern
Suche Programmierer/in für eine Java Aufgabe
Suche Programmierer/in für eine Java Aufgabe im Forum Private Stellangebote und Stellensuche von Usern
Übungsprogramm für Matheaufgaben
Übungsprogramm für Matheaufgaben im Forum Spiele- und Multimedia-Programmierung
Thema: mapping-file für hibernate zum Überschreiben der Annotationen