後のコンピューティングに必要なスーパークラスのフィールドの名前をコンソールに出力しようとしていますが、が単純なPOJOの場合は正常に機能していますが、クラスが以前にHibernateによってロードされた場合、スーパークラスではなく子のフィールドを取得しています。親の名前を出力すると(Hibernateによってロードされると、次のようになります)
[handler、_filter_signature、serialVersionUID、methods ]
これが私のコードです
public static void main(String[] args)
{
FixingModels clazz = new FixingModels();
HibernateHandler handler = new HibernateHandler(true);
Student student = (Student)handler.getSession().load(Student.class,1);
Student newStudent = new Student();
System.out.println("Printing Class loaded by Hibernate");
clazz.showFieldsFromSuperClass(student);//show the Fields of the Child and parent wrong
System.out.println("--------------------------------------------------");
System.out.println("Printing Class instance by new..");
clazz.showFieldsFromSuperClass(newStudent);//Show the fields from the parent and child IS O.K
}
private void showFieldsFromSuperClass(Student clazz)
{
final Class objectClass = clazz.getClass();
final Class parentClass = objectClass.getSuperclass();
System.out.println("Printing Child");
for(Field field:objectClass.getDeclaredFields())System.out.println(field.getName());//printing child
System.out.println("Printing Parent");
for(Field field:parentClass.getDeclaredFields())System.out.println(field.getName());//printing parent
}
初めて
clazz.showFieldsFromSuperClass(student);
呼び出されるのは、[handler、_filter_signature、serialVersionUID、methods ]を出力することです。後で、子のフィールドは、休止状態がコードの抽象クラスではなく、学生クラスの親になっているようになります。後で
clazz.showFieldsFromSuperClass(newStudent);
正しいフィールドを学生フィールドと同様に印刷していますこの場合は親Personです
私の質問は、休止状態またはSpringコンテナの新しいインスタンスから取得するたびにPersonクラスフィールド[親クラス]を取得するにはどうすればよいですか?