Professional Documents
Culture Documents
SELECT <P>.<COLUMNS>,<C>.<COLUMNS>
ON <P>.<pk>=<C>.<FK>
---------------------------------------
SQL> conn nithib
Enter password:
Connected.
SQL> select * from tab;
FROM prodtab p
inner join
modeltab m
ON p.pid=m.pidFk
SQL#Join-1
SELECT p.pcode,m.mcolor FROM prodtab p inner join modeltab m ON p.pid=m.pidFk;
(or)
SELECT p.pcode,m.mcolor FROM prodtab p join modeltab m ON p.pid=m.pidFk;
SQL#Join-2
SELECT p.pcode,m.mcolor FROM prodtab p left outer join modeltab m ON
p.pid=m.pidFk;
(or)
SELECT p.pcode,m.mcolor FROM prodtab p left join modeltab m ON p.pid=m.pidFk;
==============================================================================
*** HQL Join **
Syntax:
SELECT P.VARIABLE,C.VARIABLE
FROM <PARENT_MODEL_CLASS> P
[JOIN TYPE]
<P.HAS_A_VARIABLE> AS C
WHERE <CONDITION>;
Example:
SELECT pob.prodCode,mob.modColor
-----------------------------------------------------------------------
***Note:
a. If DB is not supports Joins(or any one Join) then it will not even work
in Hibernate Application also.
b. Few DBs are going to support FULL JOIN insted of FULL OUTER JOIN.
Here, OUTER may be not used for FULL JOIN.
=======================Code=====================================
1. pom.xml
<properties>
<maven.compiler.source>13</maven.compiler.source>
<maven.compiler.target>13</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.10.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.jslsolucoes</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.1.0</version>
</dependency>
</dependencies>
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="modeltab")
public class Model {
@Id
@Column(name="mid")
private Integer modId;
@Column(name="mcolor")
private String modColor;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name="prodtab")
public class Product {
@Id
@Column(name="pid")
private Integer prodId;
@Column(name="pcode")
private String prodCode;
@Column(name="pcost")
private Double prodCost;
@OneToMany
@JoinColumn(name="pidFk")
private List<Model> mobs;
}
4. hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<hibernate-configuration>
<session-factory>
<property
name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property
name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1522:ORCL</property>
<property name="hibernate.connection.username">nithib</property>
<property name="hibernate.connection.password">nithib</property>
<property
name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">false</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping class="in.nit.model.Model"/>
<mapping class="in.nit.model.Product"/>
</session-factory>
</hibernate-configuration>
import java.util.Arrays;
import org.hibernate.Session;
import org.hibernate.Transaction;
import in.nit.model.Model;
import in.nit.model.Product;
import in.nit.util.HibernateUtil;
ses.save(m1);
ses.save(m2);
ses.save(m3);
ses.save(m4);
ses.save(m5);
ses.save(p1);
ses.save(p2);
ses.save(p3);
ses.save(p4);
ses.save(p5);
tx.commit();
} catch (Exception e) {
tx.rollback();
e.printStackTrace();
}
}
}
6. Test (JOINS)#a
package in.nit.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.query.Query;
import in.nit.util.HibernateUtil;
Query q=ses.createQuery(hql);
List<Object[]> list=q.list();
for(Object[] ob:list) {
System.out.println(ob[0]+"-"+ob[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
7. Test#Join-b
package in.nit.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.query.Query;
import in.nit.util.HibernateUtil;
Query q=ses.createQuery(hql);
List<Object[]> list=q.list();
for(Object[] ob:list) {
System.out.println(ob[0]+"-"+ob[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
8-Test#Join-c
package in.nit.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.query.Query;
import in.nit.util.HibernateUtil;
Query q=ses.createQuery(hql);
List<Object[]> list=q.list();
for(Object[] ob:list) {
System.out.println(ob[0]+"-"+ob[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
9. Test#Join-D
package in.nit.test;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.query.Query;
import in.nit.util.HibernateUtil;
Query q=ses.createQuery(hql);
List<Object[]> list=q.list();
for(Object[] ob:list) {
System.out.println(ob[0]+"-"+ob[1]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
===========================================================================
HAS-A
Ex#2 Employee ------<> Project
*...1
Employee (empId,empName,empSal,proj:Project)
Project (projId,projCode,projCost)
Ex:
SELECT emp.empId,prj.projCode,prj.projCost
Join Ex:
SELECT sob.stdName,crs.crsName
Book(bid,bname,bamt,discount,auth:Author)
Author(aid,aname,addr)
Join Ex:
SELECT ob.bname,ob.bamt,auth.aname
FROM in.nit.model.Book ob
RIGHT JOIN
ob.auth as auth
=====================================================================