我对具有 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
实例的 1 次以上执行中使用 SQL Server 变量(或临时表)?我想避免创建数据库全局变量以及将临时会话数据存储在一些非临时表中。
提前感谢您的帮助!