Spring Data JPA 调用 Oracle 函数

2023-11-24

我正在运行一个简单的应用程序,它使用 Spring Boot + Spring Data JPA 来实现持久性。

下面是一个示例 Oracle 函数,我希望在服务实现类中返回值。

CREATE OR REPLACE PACKAGE PKG_TEST AS 
  FUNCTION HELLO_WORLD(TEXT VARCHAR2) RETURN VARCHAR2;
END PKG_TEST;

CREATE OR REPLACE PACKAGE BODY PKG_TEST AS 
  FUNCTION HELLO_WORLD(TEXT VARCHAR2) RETURN VARCHAR2 IS
  BEGIN
    RETURN 'HELLO WORLD ' || TEXT;
  END;
END PKG_TEST;

在没有框架的情况下执行此操作会很简单,但该项目内置于 Spring Boot JPA 中,因此最好使用它。

我需要一个参考指南链接或简单的基本结构来遵循。 我搜索了整个 SO 和 Spring Data JPA 参考,我发现的所有示例都是针对 CRUD 和存储过程的,没有针对函数的。

我尝试使用针对功能进行修改的存储过程示例,但没有成功。


您可以通过本机查询调用您的函数并从对偶中获取结果。

public interface HelloWorldRepository extends JpaRepository<HelloWorld, Long> {

    @Query(nativeQuery = true, value = "SELECT PKG_TEST.HELLO_WORLD(:text) FROM dual")
    String callHelloWorld(@Param("text") String text);

}

请注意,如果您的函数使用 DML 语句,它将不起作用。在这种情况下,您需要使用@Modifying对查询进行注释,但函数本身必须返回数字,因为@Modifying返回类型限制。

您还可以实施您的CustomRepository并使用SimpleJdbcCall:

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.stereotype.Repository;

@Repository
public class HelloWorldRepositoryImpl implements HelloWorldRepositoryCustom {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public String callHelloWorld() {
        SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
                .withCatalogName("PKG_TEST") //package name
                .withFunctionName("HELLO_WORLD");
        SqlParameterSource paramMap = new MapSqlParameterSource()
                .addValue("param", "value"));
        //First parameter is function output parameter type.
        return jdbcCall.executeFunction(String.class, paramMap));
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Data JPA 调用 Oracle 函数 的相关文章

  • 从 java.util.TimeZone 转换为 org.joda.DateTimeZone

    在Java中如何将一个实例转换为java util TimeZone to org joda DateTimeZone并保持夏令时 Joda Time 处于维护模式 The 乔达时间 http www joda org joda time
  • Java 将 String[] 转换为 int[]

    我有一个 String 其中每个元素都可以转换为整数 将其转换为 int 的最佳方法是什么 int StringArrayToIntArray String s public static int StringArrToIntArr Str
  • 在 IIS 中运行 Java Web 应用程序

    有人找到了在 IIS 中运行 Java Web 应用程序的方法吗 在我看来 编写一个将 Jetty 或自定义 servlet 容器与 IIS 集成的 ISAPI 插件 这个词正确吗 应该是完全可能的 这样做的好处是 许多优秀的高端 Java
  • Android - 使用 Intent 打开 PDF 文档关闭后不保存

    我面临的问题是 当尝试保存对使用此 URI 打开的 PDF 文档的更改时内容 xx xxx xxx fileprovider external Download Sync FileName pdf 我所做的任何更改在关闭文档后都不会保存 但
  • 在 Java 中停止线程? [复制]

    这个问题在这里已经有答案了 我正在编写一段代码 该代码连接到服务器 使用该连接生成一堆线程并执行一堆 东西 在某些情况下 连接会失败 我需要停止一切并从头开始使用新对象 我想在对象之后进行清理 但在线程上调用 thread stop 但此方
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • IntelliJ 对于 Java 项目使用的默认构建过程是什么?

    直接从 IntelliJ 中的 IDE 构建 Java 项目非常好 它速度很快 而且很有效 我无法找到任何有关 IntelliJ 如何进行这些默认构建的文档 我猜它使用Ant 我想做的是为下载我的项目的任何人自动化这个快速 轻松的构建过程
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • 将带有 md5 消息摘要和 DESede/CBC/PKCS5Padding 的 3DES 加密的 java 代码转换为 python

    我有这个工作java代码 它使用3DES加密对密码进行加密 import java security MessageDigest import java util Arrays import java util Base64 import
  • Android Studio安装JDK错误

    In Android Studio I am facing bellow error 当我按下时会显示此弹出窗口Alt Enter对于缺少的类 符号 当我点击 setup SDK 时 它显示两个选项 1 8 Java版本 1 8 0 60
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 如何删除 Spring 的 RestTemplate 添加的某些 HTTP 标头?

    我在远程服务方面遇到问题 我无法控制对使用 Spring 的 RestTemplate 发送的请求进行 HTTP 400 响应 使用发送的请求curl但被接受了 所以我将它们与通过 RestTemplate 发送的内容进行了比较 特别是 S
  • 将类型信息传递给 Scala 中的函数

    我有对 json 对象执行一些常见操作的代码 即提取 所以我想创建一个通用函数 它接受哪个类的类型参数 代码如下所示 def getMessageType T json JValue Either GenericError T try Ri
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • 使用用户名和密码登录 LinkedIn 失败

    LinkedIn使用oauth登录其api 服务器中无法登录api 我尝试使用http请求登录linkedin并获取oauth verifier 但我得到了这样的回应 很抱歉 出现了问题 你的申请 请确保您 启用cookie并重试 或点击此
  • SQL准备语句如何通过多个可能的菜单选择进行选择?

    所以我有 4 个菜单选择 产品 位置 课程类型和类别 所有这些都可以为空 使用 JSF 编程 但这应该与这个问题无关 因为它是一个 SQL 问题 菜单选择将向托管 bean 发送用户选择的变量 并使用准备好的语句使用用户选择的菜单中的信息
  • 我应该使用 @NamedQuery 注释还是 addNamedQuery 方法?

    目前 组成我的应用程序的 JPA 实体有一个 NamedQueries 块 其中包含许多 NamedQuery 注释 这很有效 但我的一些实体有超过 80 个 NamedQuery 注释 并且变得难以维护 我现在需要向查询添加排序 并且不想
  • 找不到 `activityViewModels()` Hilt Android

    我在我的项目中使用 Hilt 和 MVVM 我想要一个viewModel from activityViewModel在 2 个活动中使用相同的内容 但我的 Android Studio 说未解析的参考 我的应用程序 build gradl
  • 为什么这个触发器会失败?它说无效标识符

    CREATE MATERIALIZED VIEW ORDERS MV BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND AS SELECT FROM ORDERS CREATE OR REPLACE TR
  • java有类似C#的属性吗? [复制]

    这个问题在这里已经有答案了 C 属性 我的意思是 get 和 set 方法 是一个非常有用的功能 java 也有类似 C 的属性吗 我的意思是我们如何在 java 中实现类似以下 C 代码的内容 public string Name get

随机推荐

  • 使用 Django 模型进行单元测试并涉及很多关系

    或者 如何设计数据库架构以方便进行单元测试 顺便说一句 这里有一个与此非常相似的问题 如何使用外键测试 Django 中的模型 我正在尝试为使用 Django 框架的项目遵循 TDD 方法 我正在创建和测试模型及其功能 保存方法 信号 以及
  • HAVING 不带 GROUP BY

    根据标准 SQL 以下可能吗 为了符合标准 如果还没有 需要进行哪些最小的更改 它在 MySQL 中按预期工作 当且仅当第一行具有最大值页数 SELECT FROM Book HAVING NumberOfPages MAX NumberO
  • 解释 d3js 投影基础知识

    我试图了解 d3 中地理投影的基础知识 以便我可以有效地旋转 缩放和平移坐标 投影的结果是否在默认 svg 坐标系中 原点位于左上角 正 y 值沿网格向下移动 或者结果是笛卡尔坐标系的 正 y 值在网格中向上移动 我进行了这个测试 a点位于
  • Android Studio 1.0RC4 Gradle 构建错误

    我刚刚下载了 Android Studio 1 0RC4 但无法构建任何项目 甚至是新创建的项目 我得到的错误是 错误 无法使用 Gradle 分发运行构建操作 https services gradle org distributions
  • git 归档来自远程的特定哈希

    我正在尝试从一个远程存储库获取一个目录 但我只想从特定的哈希中获取该文件 如果我使用带有 HEAD 的 git archive 一切正常 但是当我尝试使用特定的哈希时 git archive v format tar remote ssh
  • AngularJS:如何从window.history中删除当前视图url?

    I have load data使用微调器查看 数据加载完成后控制器重定向到不同的视图 location path show info 如何从历史记录中删除 load data 以避免window history back 到 load d
  • 如何通过一键登录流程使用适用于 JavaScript 的 Google API 客户端?

    我在用着Google 一键登录对用户进行身份验证 在用户通过身份验证后 我会获得访问令牌 我知道我可以使用此访问令牌来使用JavaScript 的 Google API 客户端 GAPI 但我找不到任何使用此访问令牌来使用 GAPI 的方法
  • Google Play 拒绝应用程序,因为它正在上传用户的联系信息

    由于以下原因 该应用程序已从 Google Play 商店中删除 APK 有显着的披露 但披露不充分您的应用正在上传用户的Contact信息至https domen com没有充分披露 由于应用程序是国际电话应用程序 我们使用了很多权限
  • 互斥锁和解锁函数如何防止 CPU 重新排序?

    据我所知 函数调用充当编译器屏障 但不充当 CPU 屏障 This tutorial说如下 获取锁意味着获取语义 而释放锁 意味着释放语义 其间的所有内存操作都是 包含在一个漂亮的小屏障三明治内 防止任何 跨边界的不良内存重新排序 我假设上
  • devtools roxygen 包创建和 rd 文档

    我是 roxygen 的新手 正在努力了解如何使用它来快速创建新的 自定义的包 IE 我想知道最低要求是制作一个名为package1 using devtools roxygen2 3这样我就可以运行命令 require package1
  • 根据特定类别获取所有标签(包括子类别和帖子中的所有标签)wordpress

    我想在 single php 上使用 wp tag cloud 使用从特定类别获取所有标签的参数 包括来自其子类别和帖子的所有标签 Wordpress 中没有本地方法可以做到这一点 原因是标签与类别无关 它们是独立的 话虽如此 获取特定类别
  • 从 iPhone 应用程序购买实体产品,无需 Apple 在应用程序内购买

    iPhone 应用程序是否可以允许用户从应用程序内部购买实体产品 例如笔或鼠标 而无需在应用程序购买中使用 Apple 苹果允许吗 如果是的话 你知道有什么API支持这个吗 谢谢 阿杰 您不得使用 应用内购买 销售实体商品或服务 因为通过此
  • DatePicker 看起来也像新 API 上的旧设计

    所以问题很简单 我集成了一个DatePicker在我的应用程序中 不作为DialogDatePicker但作为一个 View 组件 更准确地说是一个View里面的一个Fragment动态显示并从FrameLayout包含在我的主要Fragm
  • XML XSD 模式验证工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有人知道使用 XSD 模式验证 XML 的命令行工具吗 xmllint 来自Libxml项目 xmllint schema schema xsd d
  • recyclerview 中的倒计时器无法正常工作

    我创建了一个包含多个数据和一个倒计时器的回收视图 所有的事情都工作正常 直到我无法滚动列表 当我向下滚动列表时 倒计时器将与上面的视图项目冲突 它也计算当前观看时间和随机时间 我尝试了太多的方法来解决它 但无法解决 请帮帮我 提前致谢 这是
  • 为什么我无法克隆我作为协作者的私有存储库

    我是一个私人 github 存储库的合作者 我可以分叉它 但是当我尝试将它克隆到我的系统上时 它会显示一个弹出框 要求提供凭据 即使我输入正确的凭据 我也无法登录 是只有我一个人还是 github 实际上不允许克隆私人仓库 即使我是其中的合
  • 在 Windows 上启动 Git Bash 时运行 SSH 代理

    我正在使用 git bash 我必须使用 eval ssh agent exe ssh add my ssh location 每次当我开始一个新的 git bash 时 有没有办法永久设置ssh代理 或者windows有什么好的办法吗 管
  • 对字符串的迭代器进行排序

    我有一个字符串迭代器 为了排序 我需要从中创建一个列表并使用它对其进行排序Collections sort list 有没有简单的方法来对迭代器进行排序 迭代器不是容器 它是遍历容器元素的实用程序 因此 如果您只能访问迭代器 则无法更改由该
  • 从字符串中分离出整数

    假设我有一个网页 当前通过 url 参数接受单个 ID 值 http example com mypage aspx ID 1234 我想改变它以接受listid 像这样 http example com mypage aspx IDs 1
  • Spring Data JPA 调用 Oracle 函数

    我正在运行一个简单的应用程序 它使用 Spring Boot Spring Data JPA 来实现持久性 下面是一个示例 Oracle 函数 我希望在服务实现类中返回值 CREATE OR REPLACE PACKAGE PKG TEST