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

时间:2011-04-06 10:34:34

标签: java hibernate java-ee

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

这样的信息
  

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

为班级

public class ABC {
    private int a;
    private String b;

    @OneToMany
    Private List<XYZ> c;
}

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

4 个答案:

答案 0 :(得分:3)

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

cfg是Hibernate Configuration的一个实例。

PersistentClass包含您需要的所有信息。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

看起来反射就是你所追求的,它似乎是你所追求的非hibernate特定信息。您只需要了解该类具有哪些字段以及它们的类型...

答案 3 :(得分:0)

您可以使用反射获取此信息。

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