2013-05-03 41 views
0

我有兩個表。健康&網絡如何忽略在休眠中獲取子表

這是我的健康表實體:

@Table(name="health") 
    public class Health implements Serializable { 

private static final long serialVersionUID = 1L; 

@Id 
@Column(name="hid") 
private int hid; 

@Column(name="ivid") 
private int ivid; 

@JoinColumn(name = "nwid") 
@ManyToOne(fetch = FetchType.LAZY) 
private Networks nwid; 

}

我試圖獲取一個健康行鍼對這沒有什麼可以在網絡表和多數民衆爲什麼它不給我那行記錄的健康表..

在哪裏,因爲我想從健康的那一行,我不希望它查看該記錄的網絡表..

如果我不使用crit.createAlias ...服務器調用失敗。

  try 
     { 
     session = sessionFactory.openSession(); 
     Criteria crit = session.createCriteria(Health.class); 
     crit.createAlias("nwid", "network"); 
     crit.createAlias("network.statsId", "stats"); 
     crit.add(Restrictions.eq("ivid", 0)); 
     Iterator<Health> it = crit.list().iterator(); 
     while(it.hasNext()){ 
     health = it.next(); 

     } 

回答

0

試圖改變這一點:

crit.createAlias("nwid", "network"); 

crit.createAlias("nwid", "network", CriteriaSpecification.LEFT_JOIN); 
+0

感謝,但它仍然沒有給我任何結果 – junaidp 2013-05-03 04:20:04

+0

也嘗試添加到@ManyToOne(取= FetchType.LAZY ,nullable = true)和left_join到network.statsId – Alex 2013-05-03 04:28:05

+0

leftJoin上的統計數據現在給我一個記錄,其中網絡是空的..當數據從服務器移動到客戶端失敗..我試圖把nullabl E =真實的,但它說,該屬性可空的是未定義註釋類型ManyToOn – junaidp 2013-05-03 04:41:01