在运行时获取有关entites的hibernate信息

我正在寻找一种方法来在运行时获取有关我的hibernate实体类的信息。 详细地说,我需要像这样的信息

ABC类具有属性a,b和c,c是列表和与XYZ类的关联

为了上课

public class ABC { private int a; private String b; @OneToMany Private List c; } 

运行时需要的一切。 我确信Hibernate在运行时知道所有这些,但我不知道如何获取这些信息。

 PersistentClass userMapping = cfg.getClassMapping(ABC.class); 

cfg是Hibernate Configuration的一个实例。

PersistentClass拥有您需要的所有信息。

如果您使用Hibernate作为JPA 2提供程序,那么您可以使用JPA 2元模型( javax.persistence.metamodel )。 这将从JPA元数据中为您提供有关JPA实体的信息:

 entityManager.getMetamodel().entity(entityClass). getAttributes(); 

看起来reflection就是你所追求的,它似乎不是你想要的特定信息。 您只需要有关该类具有哪些字段以及它们是什么类型的信息…

您可以使用reflection获取此信息。

 Class abcClass= ABC.class; Field[] fields = abcClass.getDeclaredFields();