导航:首页 > 编程语言 > javajpa调用存储过程

javajpa调用存储过程

发布时间:2022-11-12 09:32:26

㈠ EtityManager调用存储过程报错

在EJB3 中你可以调用的存储过程有两种
1.无返回值的存储过程。
2.返回值为ResultSet(以select 形式返回的值)的存储过程(注意:EJB3不能调用以OUT参数返回值的存储过程。)

下面我们看看几种具有代表性的存储过程的调用方法.

调用无返回值的存储过程
首先创建一个名为AddPerson的存储过程,他的DDL 如下(注:本例使用的是MySql数据库):

CREATE PROCEDURE `AddPerson`()
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT ''

㈡ 如何在JPA的po类中调用存储过程和函数

在项目开发中用到了JPA规范,并在po类中使用了存储过程,这种资料在网上很容易找到,所以很快就跑通了,代码如下:

@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {

private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}

㈢ JPA执行存储过程需要在步骤上注明@Transactional吗

一般的增删改都要用@Transactional,只要你的方法里有这三类的操作就要加上这个注解,对于查就无所谓了

简单的理解就是需要修改数据库的操作你就加这个注解好了

㈣ 如何在JPA的po类中调用存储过程和函数

在项目开发中用到了JPA规范,并在po类中使用了存储过程,这种资料在网上很容易找到,所以很快就跑通了,代码如下:

@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {

private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}
但是后来却要求将addUser改成了函数,所以也要将po类中的调用修改。起初我以为很简单,数据库中的存储过程和函数差不多,不用修改直接调用即可。但是事实却不像我想得那样,错误百出,我上网查了很多资料,但是没有能给出答案的,后来才知道只要修改一个地方就可以获得想要的功能,郁闷!

下面是修改后的代码:

@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{?=call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {

private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}
请注意call addUser语句,存储过程是直接调用,而调用函数则是在前面加?=.这可是我几天几夜不休得出的结果,拿出来与大家分享,希望有需要的朋友不要走我的弯路!
转载

㈤ JPA如果调用ORACLE中的函数,跟调用存储过程不一样哦,我把函数换成存储过程做了,以下是调用存储过程的

Oracle定义存储过程和函数主要是为了解决比较复杂的功能。是SQL语句的集合。

㈥ jpa调用mysql有多返回值存储过程详解

jpa调用mysql有多返回值存储过程详解
@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {

private static final long serialVersionUID = 5325039036880950119L;
private String userid;
private String loginid;
private String passwd;
//省略若干代码
}

㈦ java,怎么根据实体类和注解生成基础的增删改查的存储过程

  1. 使用Mybatis,这个是最简单的,配置完毕后直接在你的方法上面加Query注解

  2. 这个更简单,使用Jpa,一个叫JpaRepository的类你可以关注一下,继承了这个类以

    后甚至不用写方法和实现类,空着就行,这个类里面封装好了基本的crud,而如果想复杂

    点可以参考一下这个类的文档,方法名根据他们的规范来写,同样不需要实现类,再复杂

    点的就直接加上Query注解就行啦

㈧ JPA如何调用ORACLE的存储过程

1、springboot依赖jpa

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

2、存储过程栗子如下

Procere policy_no(a tb_bams_define.card_type_code%Type,
b Out tb_bms_detail.card_no%Type);

3、先创建一个entity

@Entity
@Table(name="Policy_table")
@NamedStoredProcereQuery(name="policy_no", procereName = "policy_no",parameters= {
@StoredProcereParameter(mode=ParameterMode.IN, type=String.class, name="a"),
@StoredProcereParameter(mode=ParameterMode.OUT, type=String.class, name="b")
})
public class PolicyTable {}

a和b是存储过程中的入参和出参。存储过程的名字保持一致。

4、层

public interface PolicyDao extends CrudRepository<PolicyTable, Long>{

@Procere(name="policy_no")
String createPolicy(@Param("a")String str);
}

5、调用简单

@Autowired
private PolicyDao policyDao;

note:最主要就是各种名称保存一致。

㈨ JPA怎么调用ORACLE的存储过程

虽然在数据库的控制台上运行SQL和调用存储过程的方法是一样的,但是某些JDBC驱动程序里是运行SQL和调用存储过程的实现方法是不一样的,所以如果要调用存储过程的话还是用CallableStatement比较好。

㈩ jpa访问数据库的存储过程怎么写

@Entity
@Table(name = "USER", schema = "MOBILE", uniqueConstraints = {
@UniqueConstraint(columnNames = { "LOGINID" }),
@UniqueConstraint(columnNames = { "USERACCOUNT" }) })
@NamedNativeQuery(name = "addUser", query = "{call addUser(:pPortalID,:ploginid,:ploginpasswd,:pSelfQuiz,:pSelfAnswer,:pUserEmail,:pUserAccount,:pUserPin)}", hints = { @QueryHint(name = "org.hibernate.callable", value = "true") }, resultClass = User.class)
public class User implements java.io.Serializable {

阅读全文

与javajpa调用存储过程相关的资料

热点内容
ps3文件分割视频 浏览:280
微信图片一键转发软件 浏览:331
如何判断s200plc编程电缆 浏览:691
太原编程培训班哪个好 浏览:171
树叶吹奏教程 浏览:6
社交app带来了哪些社会问题 浏览:394
如何安装爱宝8800数据采集器 浏览:712
文件保存了怎么找不到了 浏览:476
彩票网站怎么辨真假 浏览:840
pr找不到该文件 浏览:963
java移除panel 浏览:354
jsp填充jsp 浏览:166
海关外贸大数据在哪里查 浏览:381
思特奇java笔试题 浏览:121
葫芦侠在手机中的文件名 浏览:813
plc编程应该怎么收钱 浏览:584
c语言中源文件由什么组成 浏览:890
linuxhttpdphp配置文件 浏览:607
拆单数据要怎么保存 浏览:17
mac电脑怎样压缩文件到100m 浏览:645

友情链接