DB: oracle 10g;

entityName:com.signaldemand.flank.hibernate.model.实体名

1. 根据实体名获取DB表相对应的表名

Class<?> clazz = CrudServiceHelper.getClassForName(entityName);
AbstractEntityPersister classMetadata = (AbstractEntityPersister)_sessionFactory.getClassMetadata(clazz);
String tableName = classMetadata.getTableName();

2.获取DB中所有的表sequence name

SessionFactory sf = HibernateUtil.getInstance().getSf();
Map mds = sf.getAllClassMetadata();
for (Object entry : mds.entrySet()) {
Entry en = (Entry) entry;
EntityPersister ep = (EntityPersister) en.getValue();
IdentifierGenerator idGen = ep.getIdentifierGenerator();
if (idGen instanceof SequenceGenerator) {
SequenceGenerator seqGen=(SequenceGenerator)idGen;
seqGen.getSequenceName();//这里就得到sequenceName了。
}
}

3. 一次性取出多个序列值(通常用在导入数据时,表如果有多条记录,先查询所要的sequence再进行设置id)

select sequenceName.nextval from (select 1 from all_objects where rownum <= 100)

标注:一个足够大的表,确保满足想获取的序列数量(表的数据量至少要有你想要的序列数量那么多)

all_objects 为系统表

Hibernate 根据实体名称得到DB表名以及表对应的Sequence name的更多相关文章

  1. oracle看到用户的所有表名、表睐、字段名称、现场的目光、是空的、字段类型

    --oracle看到用户的所有表名.表睐.字段名称.现场的目光.是空的.字段类型 select distinct TABLE_COLUMN.*, TABLE_NALLABLE.DATA_TYPE, T ...

  2. 尚硅谷面试第一季-11MyBatis中当实体类中的属性名和表中的字段名不一样怎么办

    问题: MyBatis中当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 解决方案: 1.写sql语句时起别名 <!-- id属性:必须是接口中方法的方法名 resultType属性:必须是 ...

  3. SQL查询数据库信息, 数据库表名, 数据库表信息

    SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ...

  4. oracle 中查询当前用户可以看到的表名、表对应的所有字段 原

    转自:https://my.oschina.net/u/3783799/blog/2870207 1.oracle 查询当前用户下的表名,表注释 select t.table_name, f.comm ...

  5. 检索表中所有列的名称、DB中的用户表

    一.检索某个表中所有列的名称 SELECT name FROM syscolumns WHERE ID = OBJECT_ID('Departments') syscolumns (sys.sysco ...

  6. spring hibernate实现动态替换表名(分表)

    1.概述 其实最简单的办法就是使用原生sql,如 session.createSQLQuery("sql"),或者使用jdbcTemplate.但是项目中已经使用了hql的方式查询 ...

  7. 表单验证:$tablePrefix(定义表前缀);$trueTableName = 'yonghu',找到真实表名(yonghu)表;create($attr,0)两个参数;批量验证(返回数组);ajax+动态验证表单

    *$tablePrefix是定义在Model中的,优先级大于配置文件中,如果项目中表前缀全部比如为"a_",并且在配置文件中定义了 'DB_PREFIX'=>'a_' 后期如 ...

  8. SQl查询数据库库名,表名、表的列名

    查询数据库 select * From master.dbo.sysdatabases where name='数据库名' and status<>512   --读取库中的所有表名 (当 ...

  9. 在oracle中查询已知表名的表中所有字段名,每个字段是否是主键,是否是外键,是否为空的sql语句

    查询表的所有列及其属性:select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c ...

随机推荐

  1. 类似于C# using() java 语法

    From :   https://www.infoq.com/news/2010/08/arm-blocks try(Jedis jedis = jedisPool.getResource()){ S ...

  2. libvirt

    http://libvirt.org/index.html libvirt supports: The KVM/QEMU Linux hypervisor The Xen hypervisor on ...

  3. 各种数据分析图demo

    极地蛛网图:http://www.hcharts.cn/demo/index.php?p=61 各种数据分析图demo: http://www.hcharts.cn/demo/index.php?p= ...

  4. LINUX yum用法

    1.确保RHEL5中已经安装了yum [root@lvs-master ~]# rpm -qa |grep yumyum-metadata-parser-1.1.2-3.el5yum-updatesd ...

  5. Android学习笔记(四)

    一个应用程序是有很多活动构成的,使用Intent在活动间移动. Intent分为显式和隐式两种: 1.显示Intent: 新建一个布局文件,命名为second_layout.xml,代码如下 < ...

  6. BigDecimal 的roundMode 舍位模式

    roundMode是指舍位时候的模式,传参数的时候用BigDecimal.ROUND_XXXX_XXX,   有: 以下例子是setScale(0,BigDecimal.ROUND_XXXX_XXX) ...

  7. tkprof

    http://blog.csdn.net/pan_tian/article/details/7677338 需要调整的语句符合以下几点: (1).CPU占用过多 (2).Parse,Execute,F ...

  8. ant 自定义taskdef的工作目录

    上次同事在用ant执行多层目录的测试用例的时候遇到了一些问题,也就是自定义的taskdef的工作目录总是在开始执行ant的那个目录,而有一些地方用到了当前目录,因此很多测试用命的代码出现了“找不到自定 ...

  9. [FFmpeg] ffmpeg参数详解

    ffmpeg 参数语法 ffmpeg [[options][`-i' input_file]]... {[options] output_file}... 如果没有输入文件,那么视音频捕捉就会起作用. ...

  10. protoc 和 protoc-gen-go 产生的 proto 文件代码对比

    protoc 命令来自 https://github.com/google/protobuf, 由于这里没有 go 的产生代码, go的产生代码在 protoc-gen-go  (https://gi ...