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

Raphalon

Aktives 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]
 
M

maki

Gast
EclipseLink funzt doch, zeig soch mal die nicht-funktionierende Hibernate Konfiguration ;)
 

Raphalon

Aktives 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]
 

Raphalon

Aktives Mitglied
Ja, die override-xml wird gefunden. Hier der entsprechende Teil des Logging:
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
 

Raphalon

Aktives Mitglied
Habe eine mini-App erstellt (JavaSE). Einfach mit
Java:
mvn clean install assembly:single
kompilieren und dann mittels
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

  • Overwrite.zip
    7,8 KB · Aufrufe: 1
Ähnliche Java Themen
  Titel Forum Antworten Datum
Kessi Hibernate Mapping-File vs. Annotations Data Tier 4
A JPA Postgresql/JPA/EclipseLink - Mapping Fehler? Data Tier 7
OnDemand OneToMany Composite Key Mapping Data Tier 18
G Hibernate Collection Mapping - Fehler beim Updaten der DB Data Tier 0
P Hibernate Mapping - Nur eine Spalte per Join aus anderer Tabelle holen Data Tier 5
M Problem mit @Temporal Mapping und SQL Server Data Tier 3
H Hibernate - Mapping für Enumeration Data Tier 1
S (Hibernate) Mapping einer Datenbanktabelle mit mehreren Fremdschlüssel Data Tier 7
M Hibernate Mapping mal anders Data Tier 2
N Hibernate boolean mapping Data Tier 7
M JPA: Mapping von bestehender DB Data Tier 2
byte Hibernate: duplicate property mapping Data Tier 3
N Mapping einer 1:n in Hibernate Data Tier 11
F OR-Mapping Data Tier 4
A org.hsqldb.HsqlException: error in script file Data Tier 2
B Brauche Tipps für Datenbankdesign Data Tier 1
C JPA JPA Transaktionen für Web-Application und Desktop-Client Data Tier 1
Kenan89 9.2-1000 JDBC 4 nicht für Java EE ? Data Tier 3
F JPA Automatisch generierte IDs für Einträge in JoinTable Data Tier 3
D Idee für ein stabiles Interface gesucht Data Tier 7
S Datenbanktool für JAVA DB. Data Tier 10
T JPA + Startwert für PK Data Tier 9
Y [JPA] Best Practise für Sonderfall Data Tier 8
R JPA JP-QL-SELECT Befehl für Entities Data Tier 1
S JPA: Bean für Datenbankzugriff Data Tier 6
G Layer für Datenbankzugriff Hibernate Data Tier 5
D Abstrakte Basisklasse für alle Entities? Data Tier 3
boxi Suche Tutorial für Hibernate 3.3 mit Anotations Data Tier 2

Ähnliche Java Themen

Neue Themen


Oben