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

JOINs с условие в HQL заявка?

Съответстващото е HQL

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

Но в HQL е по-добре да извлечем целия обект, за да можем да използваме и другите свойства

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL не зависи от основната база данни. Той ще бъде еднакъв за всички бази данни (Oracle, Mysql, SQL сървър и т.н.). Трябва само да променим връзката с базата данни в основния конфигурационен файл.

Вашите моделни класове ще изглеждат така

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}

Вече сте дефинирали релация много към едно в xml

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

Така че докато се зарежда обект ADVRoheader, режимът на хибернация ще зареди и препратката към вътрешния обект "advmagencymaster".

за това трябва да посочите lazy="false" вместо fetch="select".

lazy="true" - отложеното зареждане ще зареди само родителски обект

lazy-"false" - нетърпеливото му зареждане ще зареди дъщерен (вътрешен) обект също с родителски обект.

добавете и двата файла hbm.xml към основния конфигурационен файл (hibernate.cfg.xml), както следва

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

точно преди фабричния затварящ етикет на сесията тук съпоставянето се извършва с база данни.

Обикновено за генераторни елементи трябва да използваме тип integer и да направим промяната и в базата данни.

Допълнително филтриране можем да добавим клауза 'where' след основната заявка. Тук се изисква само условие за присъединяване и то вече се обработва от хибернация.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете и заменете низ в BLOB за работа или Excel файл

  2. Най-добрият начин за масово вмъкване на данни в база данни на Oracle

  3. ORA-12505, TNS:слушателят в момента не знае за SID, даден в дескриптора на свързване

  4. Планът за изпълнение на Oracle SQL се променя поради вътрешно преобразуване на SYS_OP_C2C

  5. Коя е Диана и защо тя не позволява да се компилират обектите ми от база данни?