JPA:動態傳入表名對表進行修改,我這里主要演示oracle空表無法導出的情況


一、使用entityManager可以動態傳入表名,首先需要查詢出所有空表

 @Query(value = "select 'alter table ' || a.table_name || ' allocate extent' from user_tables a where a.table_name not in (select segment_name from user_segments where segment_type = 'TABLE')", nativeQuery = true)
 List<String> findTables();

二、通過entityManager創建Query對象,並執行sql

 List<String> list = versionDao.findTables();
    if (!list.isEmpty() && list != null) {
        for (String str : list) {
      //Str : alter table RECORD allocate extent,截取RECORD String reg
= "alter table (.*?) allocate extent"; Pattern compile = Pattern.compile(reg); Matcher matcher = compile.matcher(str); while (matcher.find()) { String sql = "alter table " + matcher.group(1) + " allocate extent"; Query query = entityManager.createNativeQuery(sql); query.executeUpdate(); } } }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM