Sdf Sdf
Sdf Sdf

Reputation: 31

left join in hibernate using annotation

I have two Table as follows

@Entity
@Table (name="booking_basic")
public class Booking_Basic {

    @Id
    @GeneratedValue
    @Column (name="booking_id")
    private int booking_id;  
    @GenericGenerator(name="foreign", strategy="foreign", parameters={@org.hibernate.annotations.Parameter(name="property", value="organizer_basic")})
    @Column (name="org_id")
    private int org_id;
    @OneToOne(fetch=FetchType.EAGER, optional=true)
    @PrimaryKeyJoinColumn
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE})   
    private Organizer_Basic organizer_basic;
        ....

another is

@Entity
@Table(name="organizer_basic")
public class Organizer_Basic
{

  @Id
  @GeneratedValue
  @Column(name="org_id")
  private int org_id;

  @Column(name="name")
  private String name;

  @OneToOne(cascade={javax.persistence.CascadeType.ALL}, fetch=FetchType.LAZY, mappedBy="organizer_basic")
  @JoinColumn(name="org_id")  
  private Booking_Basic booking_basic;
 .....

Now i would like to get all the organizers name based on booking id, if booking_basic have booking_id 1 and org_id = 15, then i would like to access the organizer name where org_id is 15.

        Session session = HibernateSessionFactory.getSessionFactory().openSession();
        Transaction transaction = null;
        try {
          transaction = session.beginTransaction();
          Query query = session.createQuery("FROM Booking_Basic");
          List<Booking_Basic> booking_basic = query.list();
          for(Booking_Basic b : booking_basic) 
             System.out.print("Booking Type : " + b.getOrganizer_basic().getName());
          }
          transaction.commit();
        }
        catch (Exception e) {
          e.printStackTrace();
          transaction.rollback();
        }

But when i try to run it, it's giving me null pointer exception. Any body have idea, Please help me.

Upvotes: 2

Views: 2754

Answers (1)

Alex
Alex

Reputation: 11579

Try this:

session.createQuery("FROM Booking_Basic as b left join b.organizer_basic as o");

Upvotes: 1

Related Questions