So ändern Sie die Hibernate GenerationType-ID abhängig von der zugrunde liegenden DatenbankJava

Java-Forum
Anonymous
 So ändern Sie die Hibernate GenerationType-ID abhängig von der zugrunde liegenden Datenbank

Post by Anonymous »

Ich habe ein Projekt namens main_project (verwendet Spring-Boot v2), das alle Konfigurationsklassen einschließlich der JPA-Konfiguration enthält. Das main_project verfügt auch über Entitätsklassen (wie Benutzer, Personal).

Die JPA-Konfiguration für verwaltete Entitätsklasse in main_project sieht wie folgt aus:

Code: Select all

@Entity
public abstract class MainEntity {
@Id
@GeneratedValue(GenerationType=?)
@Column(name = "id")
private T id;
}

@Entity
public class Personnel extends MainEntity {
@Column(name = "firstName")
private String firstName;

// other proprties
}
Andere Projekte verwenden main_project als Abhängigkeit für das Bootstrapping. Andere Projekte, die von main_project abhängen, können Personal- oder Benutzer- und ...-Entitäten verwenden und sie können unterschiedliche DBMS wie MySQL oder Oracle haben.

Als ich main_project als Abhängigkeit in Projekt A verwendet habe, Entitätsklasse von A-Projekt erweitert MainEntity und erstellt Es handelt sich um eigene Entitätsklassen und eine eigene Datenbankkonfigurationsdatei.

Mein Problem liegt im Typ des DBMS und GenerationType in der id-Eigenschaft in main_project.
  • 1) wenn A-Projekt Verwendet die Mysql-Datenbank, MainEntity muss haben:

    Code: Select all

    @GeneratedValue(strategy = GenerationType.IDENTITY)
  • 2) wenn Ein Projekt die Oracle-Datenbank MainEntity< verwendet /strong> muss Folgendes haben:

    Code: Select all

    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "id_generator")

    Code: Select all

    @SequenceGenerator(name="id_generator", sequenceName = "id_seq", allocationSize=1)
Wie kann Projekt A seinen Datenbanktyp erkennen und zwischen den oben genannten Ansätzen wechseln?

Ich denke, dass ich das Java-Util zur Laufzeit reflektieren und einige Anmerkungen hinzufügen muss, die auf dem Datenbanktyp basieren! Ist es richtig?

Ich habe auch gelesen, this_post_19875993, aber es hat nicht geholfen.

this_post_30731627 erklärte, dass wir einen der benutzerdefinierten GenerationType[/b] auswählen können, ich aber automatisch ohne Änderungen an main_project auswählen möchte, da A ein Projekt nicht ändern kann MainEntity-Klasse von main_project und kann sie einfach verwenden.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post