Это может быть довольно просто, но я провел в Google несколько часов, но не смог найти подходящий ответ.
Я пытаюсь перевести приведенную ниже логику в спящий режим, но не могу понять, как это сделать.
Это мои настройки: база данных Mysql с 2 таблицами T1 (ID, C1, C2) и T2 (column1, column2, column3).
Это то, что я хочу реализовать
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 «from», в List и итерацию по нему. Однако это может вызвать исключение 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();