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

JOIN z warunkiem w zapytaniu HQL?

Odpowiada to HQL

  select header.advmagencymaster.mamaid,
         header.advmagencymaster.mamaname,header.trohiono 
         from ADVRoheader header 

Ale w HQL lepiej jest pobrać cały obiekt, abyśmy mogli również użyć innych właściwości

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL nie zależy od bazowej bazy danych. Będzie taki sam dla wszystkich baz danych (Oracle, Mysql, serwer SQL itp.). Tylko musimy zmienić połączenie z bazą danych w głównym pliku konfiguracyjnym.

Twoje klasy modeli będą wyglądać tak

class ADVMAgencyMaster{
  private String mamaid;
 private String mamaname;  //getters and setters
}

class ADVRoheader{
 private String trohiono;
 private ADVMAgencyMaster advmagencymaster;     // Reference to the ADVMAgencyMaster
 //getters and setters}

Zdefiniowałeś już relację wiele do jednego w xml

 <many-to-one name="advmagencymaster" class="com.adv.hibernatebean.ADVMAgencyMaster" fetch="select"> <column name="TROHAMAID" /></many-to-one>

Tak więc podczas ładowania obiektu ADVRoheader hibernacja załaduje również wewnętrzne odniesienie do obiektu „advmagencymaster”.

w tym celu musisz podać lazy="false" zamiast fetch="select".

lazy="true" - leniwe ładowanie załaduje tylko obiekt nadrzędny

lazy-"false" - chętne ładowanie spowoduje załadowanie obiektu potomnego (wewnętrznego) również z obiektem nadrzędnym.

dodaj oba pliki hbm.xml do głównego pliku konfiguracyjnego (hibernate.cfg.xml) w następujący sposób

 <mapping resource="com/ADVRoheader.hbm.xml"></mapping>
 <mapping resource="com/ADVRomaster.hbm.xml"></mapping> 

Tuż przed tagiem zamykającym fabrykę sesji, tutaj mapowanie odbywa się z bazą danych.

Zwykle dla elementów generatora musimy użyć typu integer i dokonać zmiany również w bazie danych.

Dodatkowe filtrowanie możemy dodać klauzulę 'where' po głównym zapytaniu.Tutaj wymagany jest tylko warunek dołączenia i jest już obsługiwany przez hibernację.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Użyj zmiennych R do zapytania SQL

  2. DBMS OUTPUT PUT nie drukuje niczego

  3. Łączenie z bazą danych Oracle

  4. Oracle DataReader zwraca 1 wiersz, ale metoda Read zwraca wartość false

  5. Wyszukiwanie w polu varchar wartości liczbowych z określonego zakresu