Thursday , May 25 2017
Home / Hibernate / Hibernate Left Join Example

Hibernate Left Join Example

In this tutorials, I am going to show you how to work with Hibernate Left Join.

What is Left Join ?

The Left Join is a keyword in SQL, which returns all data from the left hand side table and matched records from right hand side table. We can see the NULL values from the right side if there is no match.

Hibernate Left Join :

We can apply the Joins in Hibernate by using the hql query or native sql query. To make a join between the two tables, those two tables must be in a logical relationship. We can achieve the relationship between two tables by applying the parent table’s primary key as child table’s foreign key.

Hibernate Left Join Example :

For this tutorials, I am going to take the two tables like Customer and Items these two are having one to many relationship. That means one Customer can have multiple Items.

Project Structure :

Hibernate Left oin

Create customer and item tables with data to apply left join.

Customer Table :

Hibernate Left Join Customer

Create item Table :

Hibernate Left Join Item

Customer.java


package com.otp.hibernate.pojo;

import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "customer")
public class Customer {
    @Id
    @Column(name = "cid")
    private int customerId;
    @Column(name = "cname", length = 15)
    private String customerName;
    @Column(name = "ccity", length = 20)
    private String customerCity;

    @OneToMany(targetEntity = Item.class, cascade = CascadeType.ALL)
    @JoinColumn(name = "cid",referencedColumnName="cid")
    private List items;

    public int getCustomerId() {
        return customerId;
    }

    public void setCustomerId(int customerId) {
        this.customerId = customerId;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCustomerCity() {
        return customerCity;
    }

    public void setCustomerCity(String customerCity) {
        this.customerCity = customerCity;
    }

    public List getItems() {
        return items;
    }

    public void setItems(List items) {
        this.items = items;
    }

}

Create Item Class

Item.java


package com.otp.hibernate.pojo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="item")
public class Item {
    @Id
    @Column(name="iid")
    private int itemId;
    @Column(name="iname")
    private String itemName;
    @Column(name="price")
    private int price;

    public int getItemId() {
        return itemId;
    }

    public void setItemId(int itemId) {
        this.itemId = itemId;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

}

Create Hibernate Configuration File :

Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/onlinetutorialspoint</property>
        <property name="connection.username">root</property>
        <property name="connection.password">123456</property>
        <property name="show_sql">true</property>
        <mapping class="com.otp.hibernate.pojo.Customer" />
        <mapping class="com.otp.hibernate.pojo.Item" />
    </session-factory>
</hibernate-configuration>

Create Hibernate Utility Class

HibernateUtility.java


package com.otp.hibernate.pojo;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtility{
    private static SessionFactory factory;

    private HibernateUtility() {
    }

    public synchronized static SessionFactory getSessionFactory() {
        if (factory == null) {
            factory = new Configuration().configure("hibernate.cfg.xml")
                    .buildSessionFactory();
        }
        return factory;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return new RuntimeException("Clone not Supported");
    }

}

Run the application :

Query For Hibernate Left Join on above tables, the same will be implemented in below class as hql select query.

select c.customerName, c.customerCity, i.itemName,i.price from Customer c left join c.items i


import java.util.Iterator;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

import com.otp.hibernate.pojo.HibernateUtility;

public class Main {

    public static void main(String[] args) {
        SessionFactory factory = HibernateUtility.getSessionFactory();
        Session session = factory.openSession();
        Query qry= session.createQuery("select c.customerName, c.customerCity, i.itemName,i.price from Customer c "
                + "left join c.items i");
        List l = qry.list();
        Iterator it=l.iterator();
        while(it.hasNext())
        {
            Object rows[] = (Object[])it.next();
            System.out.println(rows[0]+ " -- " +rows[1] + "--"+rows[2]+"--"+rows[3]);
        }
        session.clear();
        session.close();
    }

}

Output :
Hibernate Left Join Output

Happy Learning 🙂

Download Example

About chandrashekhar

Hi Folks, you have reach this so far, that shows you like what you are learning. Then why don't you support us to improve for bettor tutorials by leaving your valuable comments and why not you keep in touch with us for latest updates on your favorite blog @ facebook , twitter , Or Google+ ,

Check Also

Hibernate Restrictions with Example

In this tutorials, we are going to learn about Hibernate Restrictions with Example. In the …

Leave a Reply

Your email address will not be published. Required fields are marked *