| 
					
						 Hibernate generatig multiple queries when try to fetch record for multi level mapping. 	Inventroy has Line Item and status. And Each Line Item has Groups and Orders. 	 	I need to get all the class populated so I have written hql query  	 	SELECT DISTINCT chgbk, 1 FROM Inventory invnt RIGHT OUTER JOIN invnt.item as litem JOIN litem.gp as group WHERE  litem.lineItmName = :_LINE_ITEM_NAME. 	 	But Hibernate created 3 queries behind and this cause some issue in production. 	 	1. select distinct invnt0.INVENT_ID  as col_0_0_, 1 as col_1_0_ from Inventory invnt0 	2.select  lineItm0.LINE_ITM_ID,lineItm0.LINE_ITEM_NAME,order0.PRC_ORDER_ID,order0.ORD_NAME,grop0.LINE_ITM_GRP_ID,grop0.GRP_NAME from LineItem lineItm0 left outer join Group grop0 on lineItm0.D_GRP_ID=grop0.LINE_ITM_GRP_ID  left outer join         Order order0  on lineItm0.LINE_ITEM_PRD_NM=order0.PRC_ORDER_ID where lineItm0.LINE_ITM_ID = ? 		 	3.select status0_.STATUS_ID as STATUS1_2_0_, status0_.GRP_NAME as MCOM2_2_0_ from STATUS status0_  where status0_.STATUS_ID=? 	 	 	Hibernate automatically generates the 2 adn 3rd queries.  	 	But I need to add another condition in the where clause of the 2nd query. But the second query is automatically generate I can not alter it.   	1.Is any possible way to add another condition in the where clause of the 2nd query. 	2.If not possible is there a way to modify the main query so that only one query executes which load all the objects. 	 ########################################INVENTROY Class############################ @Entity(name = "Inventory") @Table(name = "Inventory") public class Inventory {
  	private String id""; 	private LineItem item; 	private String lineItemId;	 	private Status statusKey; 	private String statCode; 	 	@Id 	@Column(name = "INVENT_ID") 	public String getId() {} 	 	@OneToOne 	@JoinColumn(name = "LINE_ITEM_ID", nullable = true) 	public LineItem getItem() {} 	 	@Column(name = "LINE_ITEM_ID", insertable = false, updatable = false, nullable = true) 	public String lineItemId() {} 	 	@ManyToOne 	@JoinColumn(name = "INVNT_STAT_CODE", insertable = false, updatable = false) 	public Status getStatusKey() {} 	 	@Column(name = "INVNT_STAT_CODE") 	public String getStatCode() {}
  } ################################# LINE ITEM Class################################### @Entity(name = "LineItem") @Table(name = "LineItem") public class LineItem  {
  	private String id; 	private String lineItmName; 	private Order ord; 	private Group gp; 	private String lineItmPrdId; 	private String grpId; 	 	@Id 	@Column(name = "LINE_ITM_ID", nullable = false) 	public String getId() {} 	 	@Column(name = "LINE_ITEM_NAME") 	public String getLineItmName() {} 	 	@OneToOne 	@JoinColumns({         @JoinColumn(name="LINE_ITEM_PRD_NM", referencedColumnName = "PRC_ORDER_ID", insertable = false, updatable = false )     }) 	public Order getOrd() {} 	 	@Column(name = "LINE_ITEM_PRD_NM") 	public String getLineItmPrdId() {} 	 	@ManyToOne 	@JoinColumn(name = "D_GRP_ID") 	public Group getGp() {}	 	 	@Column(name = "D_GRP_ID", insertable = false, updatable = false) 	public String getGrpId() {} 	 	} 	 ######################################ORDER CLASS ###################################################
 
  	 @Entity(name = "Order") @Table(name = "Order") public class Order {
  	private  String ordId; 	private String ordName; 	 	@Id 	@Column(name = "PRC_ORDER_ID") 	public String getOrdId() {} 	 	@Column(name = "ORD_NAME") 	public String getOrdName() {}
  } ############################################### GROUP Class####################### @Entity(name = "Group") @Table(name = "Group") public class Group {
  	pubilc String lineItmPrdNum; 	public String grpName;	 	 	@Id 	@Column(name = "LINE_ITM_GRP_ID") 	public String getSeqNo() {} 	 	@Column(name = "GRP_NAME") 	public String getGrpName () {} 	} 	 	 	############################################### Status Class####################### 	 	@Entity(name = "STATUS") @Table(name = "STATUS") public class Status {
  	pubilc String statusCd; 	public String statName;	 	 	@Id 	@Column(name = "STATUS_ID") 	public String getStatusCd() {} 	 	@Column(name = "GRP_NAME") 	public String getStatName () {} 	} 
					
  
						
					 |