Einsatz von MySQL UND Oracle im gleichen Projekt

03.07.2015

Folgende Herausforderung: Wie schaffe ich es, dass Entities aus einem Projekt sowohl in Oracle als auch in MySQL funktionieren?

Das Problem: Entities, deren IDs via SequenceGenerator generiert werden.

OracleMySQL

Die Schwierigkeit dabei ist, dass die Entity sowohl in Oracle als auch in MySQL funktionieren soll. Tut es aber nicht, da MySQL keine Sequences unterstützt.

Beim Versuch das Ganze zu speichern, erscheint eine org.hibernate.MappingException, mit der ziemlich eindeutigen Fehlermeldung „org.hibernate.dialect.MySQLDialect does not support sequences“.

Die Lösung – bei der GeneratedValue Annotation die strategy von „GenerationType.SEQUENCE“ in „GenerationType.AUTO“ ändern.

OracleMySQL2

Die Hibernate-Doku sagt zu der AUTO strategy:

„AUTO – either identity column, sequence or table depending on the underlying DB.“

Erste Tests liefen mit beiden Datenbanken erfolgreich durch.

Problem Nr. 2: Wie schafft man es, dass beim Einsatz von Oracle das Changeset mit der Sequence-Generierung, beim Einsatz von MySQL das Changeset mit der AutoIncrement-Funktion aufgerufen wird, ohne jedoch das jeweils andere Changeset mit auszuführen?

Die Lösung – im Changeset das Attribut „dbms“ setzen mit der jeweiligen Datenbank:

OracleMySQL3

Zurück zur Übersicht

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*Pflichtfelder

*