緊急問題:我級聯資料表怎麼查資料庫有問題呢???

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);
}
主表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>
從表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"/>

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

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(); )

我本希望它只查詢出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中的資料,而不需要查詢與此表有關聯的表的資訊,

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

相關文章