私は、Java Hibernate の永続性を備えた MS SQL Server を初めて使用し、セッション スコープに問題があります。SQL Server のローカル (セッション) 変数は、ストアド プロシージャまたはそれが作成されたバッチにスコープが設定されていることを知っています。
しかし、次のような永続セッションを使用すると:
EntityManager entityManager = entityManagerFactory.createEntityManager();
Session session = entityManager.unwrap( Session.class );
session.createSQLQuery( " declare @bit int; set @bit = 3; " ).executeUpdate();
List obj = session.createSQLQuery( " select @bit; " ).list();
エラーがスローされます:
ERROR: Must declare the scalar variable "@bit".
を実行するたびにcreateSQLQuery( "..." )
、まったく新しいバッチが作成されることがわかります。
私の質問は:
createSQLQuery( "...")
同じSession
インスタンスからの複数回の実行で SQL Server 変数 (または一時テーブル) を使用する可能性はありますか? データベースのグローバル変数を作成したり、一時的なセッション データを非一時的なテーブルに保存したりしたくありません。
助けてくれてありがとう!