Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Hibernacja adnotacji w przestrzeni tabel Oracle

Nie, nie da się tego zrobić po wyjęciu z pudełka. Obejrzałem to w przeszłości, stosując następujące - dość zaangażowane - podejście:

  1. Utwórz własną adnotację, @TableSpec który ma przestrzeń tabel i inne niezbędne atrybuty.
  2. Rozszerz org.hibernate.cfg.Configuration i zastąp getTableMappings() aby zwrócić dekorowaną Table obiekty (patrz poniżej).
  3. Rozszerz org.hibernate.mapping.Table i nadpisz sqlCreateString() i / lub sqlAlterStrings() aby dołączyć specyfikację obszaru tabel (i dodatkowe ustawienia, jeśli takie istnieją).
  4. Zamiast używać narzędzia hbm2ddl (lub zadania ant) ​​napisz własne, które utworzy Twoją Configuration obiektu, przetwórz wszystkie pliki klas, zbierając i interpretując Twój @TableSpec adnotacje i wywołaj Configuration.generateSchemaCreationScript() lub generateSchemaUpdateScript() aby wygenerować rzeczywiste DDL.

Jak powiedziałem, raczej zaangażowane :-) Alternatywnie, jeśli WSZYSTKIE zmapowane tabele używają tego samego obszaru tabel, możesz rozszerzyć dialekt Oracle, którego używasz i nadpisać getTableTypeString() aby zwrócić specyfikację obszaru tabel. Chociaż jest to brzydki hack (ponieważ pierwotnym celem tableTypeString jest zapewnienie typu silnika MySQL), działa i jest z pewnością o wiele szybszy i łatwiejszy niż powyższe podejście.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć trzy najwyższe zarobki w tabeli emp w Oracle?

  2. Jak Oracle SELECT FROM dual działa z wieloma polami?

  3. jak zrobić wyzwalacz, taki jak ograniczenie klucza podstawowego?

  4. Łączenie się z serwerem Oracle19C za pomocą klienta Oracle11g

  5. Obróć na Oracle 10g