Java 查看字段是否已映射

Java 查看字段是否已映射,java,hibernate,Java,Hibernate,是否可以检测给定类的某个字段是否已映射 例如 我有目标 MyObject { private MyOtherObject other } 以及在映射文件中 <many-to-one name="other" class="com.mypackage.MyOtherObject" lazy="false" /> 现在是否可以在java中检测其他对象是否已映射?我知道我可以创建一个包含映射字段等的静态类,但我宁愿动态地检测它。这可能吗?使用注释而不是xml,并使用反射动态获

是否可以检测给定类的某个字段是否已映射

例如

我有目标

MyObject {
   private MyOtherObject other
}
以及在映射文件中

<many-to-one name="other" class="com.mypackage.MyOtherObject" lazy="false" />


现在是否可以在java中检测其他对象是否已映射?我知道我可以创建一个包含映射字段等的静态类,但我宁愿动态地检测它。这可能吗?

使用注释而不是xml,并使用反射动态获取注释。

如果只想查看MyOtherObject是否已映射,可以尝试从该类的SessionFactory获取类元数据。如果为空,则不映射:

s.getSessionFactory().getClassMetadata(Bar.class);

你的意思是它是否已加载到对象中,或者Hibernate是否正确配置了映射?只要我能看到Hibernate已将其映射到MyObject,这两种方法都可以。我不喜欢注释,也不可能应用于此项目。是否可以看到它是否映射到MyObject?使用ClassMetadata对象,您可以要求Hibernate返回所有映射类型,然后检查映射类型列表中是否有“other”。为此,请使用ClassMetadata中的getPropertyTypes()方法。顺便说一句,您可以在此处找到ClassMetadata的javadoc:有没有办法看到“其他”具有多对一关系?如果“其他”具有多对一关系,则类型类为ManyToOneType。例如,检查类型是否在getPropertyTypes列表中,并检查它是否是ManyToOneType的实例