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

Хибернация, идентификатор, оракул, последователност

Имах също проект, в който Oracle DB предоставя данните на моите класове @Entity. Както казахте, последователността генерира идентификатора за PK на таблицата чрез тригер. Това бяха поясненията, които използвах в един от тези класове:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "G1")
@SequenceGenerator(name = "G1", sequenceName = "LOG_SEQ")
@Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getId() {
    return this.id;
}

Това е вторият синтаксис, който сте показали във вашата публикация. Няма извикване на тригера в кода на Java, защото тригерът се управлява от DB. Спомням си, че трябваше да имам последователността и тригера едновременно в БД, ако не исках да имам проблеми. Тригерът попита дали идентификаторът на реда за вмъкване е нулев или =0. В този случай се извиква последователността LOG_SEQ.

Така че, ако предоставите стойност на @Id на вашия обект, той може да бъде вмъкнат в DB (ако този идентификатор не съществува) и последователността няма да бъде извикана. Опитайте се да видите кода на тригера, за да видите какво точно се случва.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да проверите дали базата данни е последователна след непълно възстановяване

  2. Как да създадете PDF отчет с помощта на PL/SQL

  3. Справяне с грешката в Drop Column в Oracle 18c и 19c

  4. Динамично завъртане на редове в колони в Oracle

  5. Свързване на Oracle с PostgreSQL