Hibernate 根据实体名称得到DB表名以及表对应的Sequence name
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的更多相关文章
- oracle看到用户的所有表名、表睐、字段名称、现场的目光、是空的、字段类型
		--oracle看到用户的所有表名.表睐.字段名称.现场的目光.是空的.字段类型 select distinct TABLE_COLUMN.*, TABLE_NALLABLE.DATA_TYPE, T ... 
- 尚硅谷面试第一季-11MyBatis中当实体类中的属性名和表中的字段名不一样怎么办
		问题: MyBatis中当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 解决方案: 1.写sql语句时起别名 <!-- id属性:必须是接口中方法的方法名 resultType属性:必须是 ... 
- SQL查询数据库信息, 数据库表名, 数据库表信息
		SQL查询数据库信息, 数据库表名, 数据库表信息 ---------------------------------------------- -- 以下例子, 在sql_server 中可以直接运 ... 
- oracle 中查询当前用户可以看到的表名、表对应的所有字段 原
		转自:https://my.oschina.net/u/3783799/blog/2870207 1.oracle 查询当前用户下的表名,表注释 select t.table_name, f.comm ... 
- 检索表中所有列的名称、DB中的用户表
		一.检索某个表中所有列的名称 SELECT name FROM syscolumns WHERE ID = OBJECT_ID('Departments') syscolumns (sys.sysco ... 
- spring hibernate实现动态替换表名(分表)
		1.概述 其实最简单的办法就是使用原生sql,如 session.createSQLQuery("sql"),或者使用jdbcTemplate.但是项目中已经使用了hql的方式查询 ... 
- 表单验证:$tablePrefix(定义表前缀);$trueTableName = 'yonghu',找到真实表名(yonghu)表;create($attr,0)两个参数;批量验证(返回数组);ajax+动态验证表单
		*$tablePrefix是定义在Model中的,优先级大于配置文件中,如果项目中表前缀全部比如为"a_",并且在配置文件中定义了 'DB_PREFIX'=>'a_' 后期如 ... 
- SQl查询数据库库名,表名、表的列名
		查询数据库 select * From master.dbo.sysdatabases where name='数据库名' and status<>512 --读取库中的所有表名 (当 ... 
- 在oracle中查询已知表名的表中所有字段名,每个字段是否是主键,是否是外键,是否为空的sql语句
		查询表的所有列及其属性:select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c ... 
随机推荐
- finally语句总是不会被执行?
			答案是否(1)try语句没有被执行到,如在try语句之前return就返回了,这样finally语句就不会执行.这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到.( ... 
- testNG设置测试的执行顺序
			在java类中,设置Test的执行顺序可以使用priority,或者enabled等属性.但是在testng.xml中,需要设置它的 preserve-order="true" 另 ... 
- 电子面单纸打印时固定高度18cm,到底是多少px
			点评:A4纸竖向打印,html网页页面的宽度设置成多少?这个问题是我们大家所疑惑的,于是网上搜集整理下,希望可以帮助你们 最近开发项目时遇到了网页打印的问题,这是问题之二,打印宽度设置 在公制长度单位 ... 
- [Spring] - 动态设置properties
			Spring的jar包用来做动态properties的getter/setter赋值方法: 1:需要的jar包: spring-beans-3.2.0.RC2.jar commons-logging- ... 
- Linux系统性能和使用活动监控工具 sysstat
			Sysstat是一个非常方便的工具,它带有众多的系统资源监控工具,用于监控系统的性能和使用情况.我们在日常使用的工具中有相当一部分是来自sysstat工具包的.同时,它还提供了一种使用cron表达式来 ... 
- Android学习笔记(七)
			活动的启动模式 活动的启动模式一共有四种,分别是standard.singleTop.singleTask和singleInstance, 可以在AndroidManifest.xml中通过给< ... 
- mysql 安装日志
			善于使用 mysqld.exe --console 来得到提示 
- 今年几个项目中用到的一个jqueryTab插件感觉挺好用的
			名字叫:wdscrolltab 开源中国项目地址: http://www.oschina.net/p/wdscrolltab 
- htaccess高级应用:防盗链阻止迅雷下载以及限制访问
			导读: 合理利用htaccess文件,即使没有服务器的管理权限可以解决很多问题:比如用htaccess防盗链,阻止迅雷下载,限制用户访问指定类型的文件.判断User-agent阻止迅雷下载. Rewr ... 
- $.when().then()
			当两个Ajax请求是成功的则执行函数myFunc,如果任一个有错误则执行myFailure. $.when($.ajax("/page1.php"), $.ajax("/ ... 
