導航:首頁 > 編程語言 > 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

友情鏈接