首页 > 数据库技术 > 详细

JPA:动态传入表名对表进行修改,我这里主要演示oracle空表无法导出的情况

时间:2019-12-03 18:37:35      阅读:395      评论:0      收藏:0      [点我收藏+]

一、使用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(); } } }

 

JPA:动态传入表名对表进行修改,我这里主要演示oracle空表无法导出的情况

原文:https://www.cnblogs.com/ZeroLife/p/11977847.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!