我的一個主表和一個從表是一對多關係,但是從表又與其他表有一對多等關係,

niyboy發表於2005-04-14
我的一個主表和一個從表是一對多關係,但是從表又與其他表有一對多等關係,

我這樣透過主表查詢從表:
java程式碼:

Pm pm = (Pm) getHibernateTemplate().load(Pm.class, id); 
for (Iterator list = pm.getPmproject().iterator();list.hasNext(); ) { 
PmProject ppfw = (PmProject) list.next(); 
thread.add(ppfw); 
} 
<p class="indent">

主表XML:
java程式碼:

<set name="pmproject" lazy="true" inverse="true" cascade="all" > 
<key column="project_id"/> 
<one-to-many class="com.erp.bean.beanxml.PmProject" /> 
</set> 
<p class="indent">

從表XML:
java程式碼:

<many-to-one 
name="pm" 
column="project_id" 
class="com.erp.bean.beanxml.Pm" 
not-null="true"/> 

<many-to-one 
name="ccommon" 
class="com.erp.bean.beanxml.Ccommon" 
column="common_id" 
unique="true"/> 
<p class="indent">

....................
我透過主表去查詢從表資料的時候結果出現了這樣的錯誤:

net.sf.hibernate.LazyInitializationException: Failed to lazily initialize a collection

sf.hibernate.util.JDBCExceptionReporter]-[WARN] SQL Error: 1116, SQLState: S1000

2005-03-28 14:13:09,328 [net.sf.hibernate.util.JDBCExceptionReporter]-[ERROR] General error, message from server: "Too many tables. MySQL can only use 31 tables in a join"


由於相關聯的表很多;錯誤中提示有30幾個表相互關聯,但是我根本用不了那些關聯呀;

是這句程式碼有問題,

for (Iterator list = pm.getPmproject().iterator();list.hasNext(); ) 
<p class="indent">

我本希望它只查詢出Pmproject中的資料,然後進行疊代出來就可以了;沒有想到它把與此表有關聯的所有表都查詢,所以造成了:

[net.sf.hibernate.util.JDBCExceptionReporter]-[ERROR] General error, message from server: "Too many tables. MySQL can only use 31 tables in a join"

這樣的錯誤;

我的目的是:只查詢Pmproject中的資料,而不需要查詢與此表有關聯的表的資訊,

請問有什麼好的辦法沒有?????

相關文章