1

私は、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 変数 (または一時テーブル) を使用する可能性はありますか? データベースのグローバル変数を作成したり、一時的なセッション データを非一時的なテーブルに保存したりしたくありません。

助けてくれてありがとう!

4

0 に答える 0