日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle

發布時間:2023/11/30 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我想使用HSQL內存數據庫對MyBatis持久層進行單元測試.真正的應用程序使用Oracle數據庫.這工作正常,我們開始為id列添加自動遞增的數字. Oracle需要使用序列來獲取遞增的數字,因此在Oracle數據庫中創建了一個名為basis_seq的序列.在我的MyBatis mapper

XML文件中我有這個:

SELECT basis_seq.NEXTVAL FROM DUAL

insert into basis

(id, name)

values

(#{id}, #{name})

當我運行應用程序但是單元測試發生錯誤時,這可以工作:

org.springframework.jdbc.BadSqlGrammarException: Error selecting key

or setting result to parameter object. Cause:

java.sql.SQLSyntaxErrorException: user lacks privilege or object not

found: DUAL ; bad SQL grammar []; nested exception is

java.sql.SQLSyntaxErrorException: user lacks privilege or object not

found: DUAL

據了解,“DUAL”是甲骨文中存儲序列的某種虛擬表,我的測試數據庫中沒有.如果我刪除< selectKey> -tag單元測試工作(因為HSQL可以自動生成標記為身份的列的id),而不是真正的應用程序.一個解決方法是為單位測試創建單獨的MyBatis映射程序XML文件,而不使用< selectKey> -tag,但這是不希望的,因為我想測試真正的配置.

有沒有辦法在HSQL中創建和使用序列,也可能有一些MyBatis的解決方法?或者我應該使用另一個數據庫進行單元測試,如H2?

我用:

> Spring 3.0.5

> HSQL 2.2.4

> MyBatis 3.0.5

更新:

從fredt得到答案后,我是如何編輯我的Spring配置的:

在我定義了我的數據源之前:

現在我這樣做:

destroy-method="close">

另外,在schema.sql中我需要創建序列:

CREATE SEQUENCE BASIS_SEQ START WITH 1000 INCREMENT BY 1;

CREATE SEQUENCE OTHER_SEQ START WITH 1000 INCREMENT BY 1;

(如果在單元測試期間多次運行此腳本,請記住添加下拉序列BASIS_SEQ(如果存在);在schema.sql的頂部)

總結

以上是生活随笔為你收集整理的hsql mybatis 表不存在_单元测试MyBatis与HSQL而不是Oracle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。