Criteria crit = sess.createCriteria(Cat.class);
crit.setMaxResults(50);
List cats = crit.list();
cats
は現在のセッションで永続オブジェクトになるでしょうかsess
?オブジェクトをロードするHibernateの基準。オブジェクトは永続化されますか?
APIを確認しましたが、何も言及していません。私はこれを心配しています。だから、オブジェクトが永続的かどうかを公式に言及することができれば幸いです。オブジェクトをロードするために初めてHibernateのsession
を使用したとき、オブジェクトが永続的になることを認識できず、オブジェクト内の値、変更はデータベースにフラッシュされ、私にとっては非常に大きな問題を引き起こします。このhttps://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.htmlに基づい
、
特定の永続クラスに対してクエリを表すorg.hibernate.Criteriaインターフェース。
返されるオブジェクトが永続的であることを意味しますか?オブジェクト内の値を安全に変更できますか?
オブジェクトは永続的ではありません場合は
、なぜsetReadOnly
属性を制御する必要がAPIドキュメント:この基準 によってロードされたエンティティおよびプロキシの
読み取り専用に設定/変更可能なモード。この設定は、永続コンテキスト のデフォルト設定を上書きします。
これは非常に混乱しています。
これはあまりにも悪い...私はHibernateを介してデータをフェッチすることができますが、永続状態ではないことを知っていますか?これは気付かずに誤ってフラッシュした場合、非常に危険です... – GMsoF
セッションからオブジェクトを切り離すか、session.setDefaultReadOnly(true)を実行します。詳細なオプションは次のとおりです:http://stackoverflow.com/questions/5800814/is-it-possible-to-detach-hibernate-entity-so-that-changes-to-object-are-not-aut – Justas
ありがとう共有。あまりにも悪いことに、データロード後にいつも分離する必要がある場合、それは面倒です。 'setDefaultReadOnly'を使うと、特定の永続オブジェクトではなくすべての永続オブジェクトが削除されます。これ以外にも、休止状態のデータは自動的に非永続オブジェクトに変換されます。 – GMsoF