sql >> Databasteknik >  >> RDS >> Oracle

JOIN med villkor i HQL-fråga?

Motsvarande är HQL

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

Men i HQL är det bättre att hämta hela objektet så att vi kan använda de andra egenskaperna också

   from ADVRoheader header 
   inner join 
   header.advmagencymaster master

HQL är inte beroende av den underliggande databasen. Det kommer att vara samma för alla databaser (Oracle, Mysql, SQL-server etc). Endast Vi behöver ändra databasanslutningen i huvudkonfigurationsfilen.

Dina modellklasser kommer att se ut så här

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}

Du har redan definierat en många till en relation i xml

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

Så medan laddning av ADVRoheader-objekt kommer hibernate att ladda den inre objektreferensen "advmagencymaster" också.

för detta måste du ange lazy="false" istället för fetch="select".

lazy="true" - lat laddning det kommer att ladda endast överordnat objekt

lazy-"false" - ivrigt att ladda det kommer att ladda barn(inre) objekt även med överordnat objekt.

lägg till båda hbm.xml-filerna i huvudkonfigurationsfilen (hibernate.cfg.xml) enligt följande

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

precis innan sessionsfabrikens stängningstagg här sker mappningen med Database.

Vanligtvis för generatorelement måste vi använda typen heltal och göra ändringen i databasen också.

Extra filtrering kan vi lägga till "where"-klausul efter huvudfrågan. Här krävs endast anslutningsvillkor och det hanteras redan av viloläge.



  1. Skillnaden mellan två datum i postgresql

  2. SQL-gruppering efter månad och år

  3. Hur gör jag en otydlig matchning av företagsnamn i MYSQL med PHP för automatisk komplettering?

  4. Hur man listar databaser och tabeller i PostgreSQL med psql