【问题标题】:Execute native T-SQL with Spring使用 Spring 执行本机 T-SQL
【发布时间】:2014-05-21 09:45:28
【问题描述】:

我有一条适用于 MS-SQL (SQL Azure) 的 SQL 语句:

BEGIN TRANSACTION
DECLARE @UserId INT
SET @UserId = 1
select @UserId as some_value
COMMIT

(我的实际SQL比较复杂,这只是一个例子)。

如何从 Spring 执行这个原生 T-SQL 代码?或者更具体地说,如何让 Spring 将此 T-SQL 发送到 DB 引擎执行?

我尝试使用 jdbcTemplate.executeForObject 但它似乎不支持此 SQL。异常是 UncategorizedSQLException。

【问题讨论】:

    标签: sql-server spring tsql


    【解决方案1】:

    使用 spring 处理事务可以并且应该使用 service layer 上的注释以声明方式执行。

    只需将 vanilla jdbc 用于creating sprocs etc 或运行正常的准备好的语句/查询并设置con.setAutoCommit(false);

    【讨论】:

    • 由于我们这边的各种问题,使用 Spring 注释将需要我们编写自定义 JPA 隔离级别。我正在探索避免这种情况的选择。我们可以用 T-SQL 清晰地表达一个解决方案,但不知道如何在 Spring 中执行它。
    • 为什么要涉及spring,然后只做一个jdbc准备好的语句
    • 我正在尝试使用 Spring,因为这是我们的后端编写的。我不能为此使用事务注释,因为 JPA 不支持我们需要的隔离级别,这迫使我们编写我们自己的隔离级别。
    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多