これはかなり簡単かもしれませんが、私はGoogleで数時間を過ごしましたが、関連する回答が見つかりませんでした。異なるwhere句を持つHibernate selectクエリ
私は休止状態に以下のロジックを置くしようとしていますが、私はどのように把握することはできませんよ。 これは私のセットアップです: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
}
を実装したいものです。ただし、OutOfMemory例外が発生する可能性があります。 HQLのあり方をお聞かせください。
これは、あなたがscroll()
(またはiterate()
)メソッドではなく、list()
方法を使用して、クエリの結果にスクロールすることができ、私は
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は、テーブル上のが、実体上では動作しません。テーブルではなくエンティティを表示してください。 –
私は同意する、私は注釈を使用してクラスにテーブルをマップしている。だから今私はT1とT2の2つのクラスを持っている私はHQLに上記のMySQLのクエリを配置する方法。 – girish
HQLクエリはSQLクエリとほとんど同じです。 HQLに関するドキュメントを読んだことがありますか?何を試しましたか? –