sql >> Databáze >  >> RDS >> Oracle

JOINy ​​s podmínkou v dotazu HQL?

Odpovídající je HQL

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

Ale v HQL je lepší načíst celý objekt, abychom mohli použít i ostatní vlastnosti

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL nezávisí na podkladové databázi. Bude stejná pro všechny databáze (Oracle, Mysql, SQL server atd.). Potřebujeme pouze změnit připojení k databázi v hlavním konfiguračním souboru.

Vaše modelové třídy budou vypadat takto

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}

Již jste definovali relaci mnoho ku jedné v xml

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

Takže při načítání objektu ADVRoheader hibernace se načte také odkaz na vnitřní objekt "advmagencymaster".

k tomu musíte zadat lazy="false" místo fetch="select".

lazy="true" - líné načítání načte pouze nadřazený objekt

lazy-"false" - dychtivé načtení načte podřízený (vnitřní) objekt také s rodičovským objektem.

přidejte oba soubory hbm.xml do hlavního konfiguračního souboru (hibernate.cfg.xml) následovně

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

těsně před značkou uzavření továrny relace zde probíhá mapování pomocí databáze.

Obvykle pro prvky generátoru potřebujeme použít typ integer a provést změnu také v databázi.

Extra filtrování můžeme přidat klauzuli 'kde' za hlavní dotaz. Zde je vyžadována pouze podmínka připojení a je již zpracována hibernací.



  1. K čemu je ve skutečnosti datový typ SQL National Character (NCHAR)?

  2. hledat kód v servletu na mysql?

  3. Jak vytvořit jedinečné omezení ve sloupci pro již existující tabulku - SQL Server / Výukový program TSQL, část 97

  4. Vložení seznamu obsahujícího více hodnot do MySQL pomocí pymysql