首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Hibernate中的模型中获取表名

从Hibernate中的模型中获取表名,可以通过以下步骤实现:

  1. 获取SessionFactory实例,可以通过HibernateUtil类的静态方法getSessionFactory()获取。
  2. 通过SessionFactory实例获取Session实例,可以通过调用openSession()方法获取。
  3. 通过Session实例获取SessionFactory的元数据,可以通过调用getSessionFactory().getMetamodel()方法获取。
  4. 通过SessionFactory的元数据获取实体类对应的表名,可以通过调用getEntity(Class entityClass).getName()方法获取。

以下是一个示例代码:

代码语言:java
复制
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;

public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
            Metadata metadata = new MetadataSources(standardRegistry).buildMetadata();
            return metadata.getSessionFactoryBuilder().build();
        } catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed: " + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static String getTableName(Class<?> entityClass) {
        return sessionFactory.getMetamodel().entity(entityClass).getName();
    }
}

在上面的示例代码中,我们定义了一个HibernateUtil类,其中包含了一个静态方法getTableName(),该方法接受一个实体类作为参数,并返回该实体类对应的表名。

在getTableName()方法中,我们首先通过调用getSessionFactory().getMetamodel()方法获取SessionFactory的元数据,然后通过调用entity(Class entityClass)方法获取实体类对应的EntityType实例,最后通过调用getName()方法获取表名。

需要注意的是,在使用上述代码之前,需要先配置Hibernate的配置文件,并将实体类添加到配置文件中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL 如何查询包含某字段

information_schema.tables 指数据库(information_schema.columns 指列) table_schema 指数据库名称 table_type 指是类型...(base table 指基本,不包含系统) table_name 指具体 如查询work_ad数据库是否存在包含”user”关键字数据 select table_name from...如何查询包含某字段 select * from systables where tabname like 'saa%' 此法只对Informix数据库有用 查询指定数据库中指定所有字段名column_name...table_schema from information_schema.tables where table_schema = ‘test’ group by table_schema; mysql查询到包含该字段所有...SELECT TABLE_NAME FROM information_schema.COLUMNS WHERE COLUMN_NAME='字段名' 如:查询包含status 字段数据 select

12.3K40

oracle r修改,oracle修改「建议收藏」

;ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效” Oracle 11g想修改: rename ASSETPORJECT...to ASSETPROJECT; 结果提示:ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超 … ORACLE修改Schema总结 前阵子遇到一个案例,需要将数据库几个...USER A 移动到USER B下面,在ORACLE,这个叫做更改所有者或者修改Schema.其实遇到这种案例,有好几种解决方法.下面我们通过实验 … 在mysql修改sql语句 在使用...,比如说需要保存数据带小数,但是在最初设计时候是给number(10)类型,开始保存是整数时候满足要求,后来在保存小数时候 会发现自动四 … db2 SQL判断物理是否存在、修改 1...T_Stu; mysql如何修改名字?修改? 需求描述: 今天在进行mysql历史数据迁移,需要将某张进行备份,修改名字,在此记录下操作过程.

1.8K20

损坏手机获取数据

比如粉碎、射击手机或是直接扔进水里,但取证专家仍然可以找到手机里证据。 如何获取损坏了手机数据呢? ?...他们还输入了具有多个中间和格式奇奇怪怪地址与联系人,以此查看在检索数据时是否会遗漏或丢失部分数据。此外,他们还开着手机GPS,开着车在城里转来转去,获取GPS数据。...要知道,在过去,专家们通常是将芯片轻轻地板上拔下来并将它们放入芯片读取器来实现数据获取,但是金属引脚很细。一旦损坏它们,则获取数据就会变得非常困难甚至失败。 ?...图2:数字取证专家通常可以使用JTAG方法损坏手机中提取数据 数据提取 几年前,专家发现,与其将芯片直接电路板上拉下来,不如像导线上剥去绝缘层一样,将它们放在车床上,磨掉板另一面,直到引脚暴露出来...比较结果表明,JTAG和Chip-off均提取了数据而没有对其进行更改,但是某些软件工具比其他工具更擅长理解数据,尤其是那些来自社交媒体应用程序数据。

10K10

如何列表获取元素

思考一下: 对于URAM是否也可以通过设置独立地址空间将其配置为两个独立单端口RAM? 观察URAM物理管脚,不难发现A/B端口都有相应地址、使能、读写控制信号。...有两种方法可用于列表获取元素,这涉及到两个命令,分别是lindex和lassign。...该命令接收两个参数:列表变量和索引号。例如: ? 方法2:lassign 上述操作可以通过lassign快速完成。...lassign接收至少两个变量,第一个是列表变量,第二个是其他变量,也就是将列表元素分配给这些变量。例如: ? 可以看到此时lassign比lindex要快捷很多。...情形1:列表元素个数比待分配变量个数多 例如,上例只保留待分配变量x和y,可以看到lassign会返回一个值c,这个值其实就是列表未分发元素。而变量x和y值与上例保持一致。 ?

17.2K20

hibernate 对象状态

数据库已经删除了对象,还存在于jvm时。(delete方法调用后) 2. 持久态 存在于jvm,也存在于数据库记录,session未关闭,保持着对象与记录同步,适合以下情况: 1....将jvm存在对象保存或同步到数据库记录后对象状态。(save、update方法调用后) 注: session中有一个map存放着被托管对象,也就是hibernate以及缓存对象来源。...当应用程序调用org.hibernate.Transactioncommit()方法时候,commit()方法先清理缓存,然后再向数据库提交事务。...Hibernate之所以把清理缓存时间点安排在事务快结束时,一方面是因为可以减少访问数据库频率,还有一方面是因为可以尽可能缩短当前事务对数据库相关资源锁定时间。...脏检查  Transaction tx=session.beginTransaction();  User user=(User)session.load(User.class,”1”);//数据库中加载符合条件数据

1.4K50

hibernateexecuteUpdate缓存问题

介绍: 在开发一个更新部门编号功能遇到了一个由hibernate缓存导致问题,后来发现是由于hibernate缓存机制所导致,这里记录了一下这个问题及其分析解决方法。...{使用批量更新hibernateexecuteUpdate() } 3.把插入部门排序更新成插入位置序号。...2 方法执行调试: 1 executeUpdate被执行时尽管后台也有响应hql输出,但是此时调用获取部门列表,查看返回部门列表,排序属性还是原来,所以executeUpdate不会更新hibernate...缓存对象,这也情有可原因为executeUpdate操作是可能更新海量数据。...2 测试用例获取单个部门id方法,并没有输出sql语句,所以肯定是从缓存获取对象,所以你能理解部门1、部门2排序还是1、2了吧 。

67320

Mysql备份恢复单个

因为云平台备份是把库中所有的都打包成一个 .sql文件,然而这一个.sql文件大约有20G,现阶段方法是把.sql文件source到数据库数据处理机器上,然后再根据需求提出需要。...思路(原谅我也理解了好一会儿): 主要使用sed命令来实现,加上-n,-e参数把打印结果追加到一个文件,就得到了想要内容。...在一般 sed 用法,所有来自 STDIN资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理那一行(或者动作)才会被列出来。...我们使用如下sed命令原始sql中导出wp_comments: 意思是:打印DROP TABLE....此时,lianst.wp_comments.sql 就是我们原始备份sql(lianst.sql)中导出wp_commentssql语句。接下来我们就可以针对这一个来进行恢复了。

4.4K110

如何快速获取AWR涉及到

而相关对象,最佳方式是应用直接提供,这样最准确;但是各种原因,应用无法提供,那么DB层面观察,测试期间AWR获取,可以有不同维度: 1.精确找到所有I/O慢TOP SQL,收集相关进行预热 2....尽可能找更多AWRSQL,收集相关进行预热 如果是第一种方式,需要人工去定位,SQL数量会很少几条。...那有什么简单方式吗? AWR本质就是文本内容,我们可以依据通常出现在关键字来定位。同样是有多种维度,比如SELECT语句前会有FROM关键字。...(或视图名) sort -u 表示排序并去重 这部分命令会 awr.html 文件中提取满足条件部分输出。...到flash: alter table Z_OBJ storage(cell_flash_cache keep);

12530
领券