Oracle
 sql >> база данни >  >> RDS >> Oracle

Конфигурирайте Hibernate да използва SYS_GUID() на Oracle за първичен ключ

Може да успеете да използвате генератора "guid". Вижте тази публикация от форума за Hibernate. Изглежда, че са добавили поддръжка за Oracle с помощта на SYS_GUID() преди известно време, но документацията все още казва, че поддържат само SQL Server и MySQL.

Все още не съм работил с анотации на JPA, но ето пример за използване на XML конфигурация:

<id name="PRODUCT_ID">
  <generator class="guid" />
</id>

РЕДАКТИРАНЕ: По отношение на втория ви въпрос, мисля, че питате защо Hibernate не може да направи нещо подобно:

INSERT INTO PRODUCT (PRODUCT_ID, /* etc */)
SELECT SYSGUID(), /* etc */

Причината е, че Hibernate трябва да знае какъв е ID на обекта. Например, помислете за следния сценарий:

  1. Създавате нов обект Продукт и го запазвате. Oracle присвоява идентификатора.
  2. Откачвате продукта от сесията на хибернация.
  3. По-късно го прикачвате отново и правите някои промени.
  4. Сега искате да запазите тези промени.

Без да знае идентификатора, Hibernate не може да направи това. Той се нуждае от идентификатора, за да издаде изявлението UPDATE. Така че реализацията на org.hibernate.id.GUIDGenerator трябва да генерира идентификатора предварително и след това да го използва повторно в оператора INSERT.

Това е същата причина, поради която Hibernate не може да извършва пакетиране ако използвате генериран от база данни идентификатор (включително автоматично увеличаване на бази данни, които го поддържат). Използването на един от hilo генераторите или друг механизъм за идентификация, генериран от Hibernate, е единственият начин да постигнете добра производителност при вмъкване на много обекти наведнъж.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Експортирайте данни в JSON файл в Oracle 11g с помощта на PL/SQL

  2. INSERT от 10 милиона заявки под 10 минути в Oracle?

  3. Oracle PL/SQL групово събиране с пример за изключения за запазване

  4. Как да изпратите POST заявка с данни от формуляр и параметри в PL/SQL

  5. Разгръщане и конфигуриране на ODP.NET за работа без инсталация с Entity Framework