這可能很簡單,但我花了數小時在谷歌,但無法找到相關答案。休眠選擇查詢與不同的where子句
我想把下面的邏輯放入休眠狀態,但我無法弄清楚如何。 這是我的設置:具有2個表T1(ID,C1,C2)和T2(column1,column2,column3)的Mysql數據庫。 這是我想要實現
results = select ID, from T1 //This will result in multiple rows.
for(eachRow in results)
{
select column1,column2,column3 from T2 where ID=eachRow.ID
//Do some computation like
//Assign value of table "T1" column "C1" to table "T2" column "column1"
column1 = eachRow.C1
}
現在我能想到的「從」條款閱讀使用Hibernate的整個表到一個列表,並通過它遍歷邏輯的東西。但是,這可能會導致OutOfMemory異常。您能否建議HQL必須如何?
這是我做過什麼
Session session = HibernateSession.getSessionFactory().openSession();
Transaction aTableTx = null;
try {
aTableTx = session.beginTransaction();
_allRows = session.createQuery("from T1").list();
for (Iterator<T1> iterator = _allRows.iterator(); iterator.hasNext();)
{
T1 aRow = iterator.next();
//Here I am planning to run a similar to
//_allRows = session.createQuery("from T2").list();
//Store the result and iterate through the list, but
//it is very inefficient.
}
aTableTx.commit();
首先,HQL不能在表工作,但對實體。向我們展示你的實體而不是表格。 – 2012-02-20 18:09:18
我同意,我使用註釋將表映射到類。所以現在我有2個類T1和T2我如何把上面的mysql查詢放入HQL中。 – girish 2012-02-20 18:21:15
HQL查詢將與SQL查詢幾乎相同。您是否閱讀過關於HQL的文檔?你有什麼嘗試? – 2012-02-20 18:23:51