我不得不使用createSQLQuery
将值插入带有使用hibernate的Identity列(第一列和主键)的表中。使用休眠类不是一种选择,因为这些表是为添加到系统中的每个客户实时创建的。我已经运行了查询并成功插入到表中。然后我执行一个“select scope_identity()”,它总是返回null。 “select @@ Identity”起作用,但不能保证是正确的。我也尝试追加“select scope_identity()”到插入查询。然后我试图query.list()
和query.uniqueResult()
这两个抛出的休眠异常“无结果...”在休眠时使用createSQLQuery选择scope_identity()
Session session = DatabaseEngine.getSessionFactory().openSession();
String queryString = "insert into table1 (dataid) values (1)"
SQLQuery query = session.createSQLQuery(insertQueryString);
query.executeUpdate();
query = session.createSQLQuery("select scope_identity()");
BigDecimal entryID = (BigDecimal)query.uniqueResult();
这个简单的例子表的定义如下:
"CREATE TABLE table1 (EntryID int identity(1,1) NOT NULL," +
"DataID int default 0 NOT NULL, " +
"PRIMARY KEY (EntryID))";
有没有办法,我缺少使用scope_identity()与createSQLQuery
?