如何从Hibernate检索类名?

如何从Hibernate检索类名?,hibernate,classname,Hibernate,Classname,如果已经有一个问题可以解决这个问题,那么我可以得到一个链接,因为我找不到 我希望获得Hibernate数据库中存储的对象的存储类名。当我从外部查看数据库时,我看到存储的具有类名的字符串。如何在不构造对象的情况下检索类名 先谢谢你 编辑:不,我没有特别指定鉴别器;这些实际上是正在存储的子类。我只是想得到对象的实际子类。根据实例映射到数据库格式的方式,有几种方法。在这两种情况下,第一步是获得Hibernate的配置实例,该实例包含映射配置(请参阅) 根对象是Configuration,您查找的信息可

如果已经有一个问题可以解决这个问题,那么我可以得到一个链接,因为我找不到

我希望获得Hibernate数据库中存储的对象的存储类名。当我从外部查看数据库时,我看到存储的具有类名的字符串。如何在不构造对象的情况下检索类名

先谢谢你


编辑:不,我没有特别指定鉴别器;这些实际上是正在存储的子类。我只是想得到对象的实际子类。

根据实例映射到数据库格式的方式,有几种方法。在这两种情况下,第一步是获得Hibernate的
配置
实例,该实例包含映射配置(请参阅)

根对象是
Configuration
,您查找的信息可能由
getTableMappings()
返回。您必须使用调试器和Hibernate源代码,还要花一些时间来弄清楚一切是如何工作的


如果您使用的是Spring,则必须找到一种获取配置对象的方法。最好是在
配置.buildSessionFactory()
中设置断点。这应该会给您一个想法。

根据实例映射到数据库格式的方式,有几种方法。在这两种情况下,第一步是获得Hibernate的
配置
实例,该实例包含映射配置(请参阅)

根对象是
Configuration
,您查找的信息可能由
getTableMappings()
返回。您必须使用调试器和Hibernate源代码,还要花一些时间来弄清楚一切是如何工作的


如果您使用的是Spring,则必须找到一种获取配置对象的方法。最好是在
配置.buildSessionFactory()
中设置断点。这应该给你一个想法。

我在存储其类型的对象中创建了一个新字段。这就是我在解决方案中使用的内容,但是我仍然希望得到有关如何访问鉴别器值的答案。

我在存储其类型的对象中创建了一个新字段。这就是我在解决方案中使用的方法,但是我仍然希望得到有关如何访问鉴别器值的答案。

据我所知,Hibernate不会将类名存储在数据库中,对吗?它从xml配置文件或注释类中获取映射。我打开了pgAdmin,我可以在一个数据库列中看到类名的相似之处。这不是确切的类名,但对于我来说已经足够了。我认为在数据库中看到类名的唯一方法是使用子类,而不是显式定义鉴别器值。在这种情况下,Hibernate将使用类名作为鉴别器。我建议你详细说明你要完成的任务。是的,这正是发生的事情,我没有明确定义鉴别器值。据我所知,Hibernate没有在数据库中存储类名,对吗?它从xml配置文件或注释类中获取映射。我打开了pgAdmin,我可以在一个数据库列中看到类名的相似之处。这不是确切的类名,但对于我来说已经足够了。我认为在数据库中看到类名的唯一方法是使用子类,而不是显式定义鉴别器值。在这种情况下,Hibernate将使用类名作为鉴别器。我建议你详细说明你想要实现的目标。是的,这正是发生的事情,我没有明确定义鉴别器值。-这个答案向您展示了如何循环所有映射。PersistentClass.getTable将为您获取表名,因此如果您从表开始,您应该能够循环所有类映射,直到找到所需的映射。子类可能会混淆这个问题,因为一个表可以映射到多个类。@Brian:您应该将此作为答案发布:)-该答案显示了如何循环所有映射。PersistentClass.getTable将为您获取表名,因此如果您从表开始,您应该能够循环所有类映射,直到找到所需的映射。子类可能会混淆这个问题,因为一个表可以映射到多个类。@Brian:您应该将此作为答案发布:)