Как изменить идентификатор Hibernate GenerationType в зависимости от базовой базы данныхJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как изменить идентификатор Hibernate GenerationType в зависимости от базовой базы данных

Сообщение Anonymous »

У меня есть проект под названием main_project (использует Spring-boot v2), который содержит все классы конфигурации, включая конфигурацию JPA. В main_project также есть классы сущностей (например, User, Personnel).

Конфигурация JPA для класса управляемой сущности в main_project выглядит следующим образом:

Код: Выделить всё

@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
}
Другие проекты используют main_project в качестве зависимости для начальной загрузки. Другие проекты, зависящие от main_project, могут использовать сущности Personnel или User и..., а также иметь разные СУБД, например MySQL или Oracle.

Когда я использовал main_project в качестве зависимости в проекте A , класс сущности проекта A расширяет MainEntity и создает у него есть собственные классы сущностей и собственный файл конфигурации базы данных.

моя проблема связана с типом СУБД и GenerationType с id в main_project.
  • 1) когда проект A использует базу данных Mysql, MainEntity должен есть:

    Код: Выделить всё

    @GeneratedValue(strategy = GenerationType.IDENTITY)
  • 2) когда проект A использует базу данных Oracle, MainEntity< /strong> должно быть:

    Код: Выделить всё

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

    Код: Выделить всё

    @SequenceGenerator(name="id_generator", sequenceName = "id_seq", allocationSize=1)
Как проект А может определить тип своей базы данных и переключаться между вышеуказанными подходами?

Я думаю, что мне нужно отразить Java-утилиту во время выполнения и добавить несколько аннотаций в зависимости от типа базы данных! это правда?

Я тоже прочитал this_post_19875993, но это не помогло.

this_post_30731627 объяснил, что мы можем выбрать один из пользовательских GenerationType[/b], но я хочу выбирать автоматически без каких-либо изменений в main_project, потому что A проект не может быть изменен MainEntity класса main_project и просто можете его использовать.


Подробнее здесь: https://stackoverflow.com/questions/508 ... erlying-da
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»