Hibernate如何访问私有字段?

7
如何让Hibernate可以访问Java类的私有字段/方法,比如设置@Id?谢谢。
3个回答

10

4

尝试

import java.lang.reflect.Field;

class Test {
   private final int value;
   Test(int value) { this.value = value; }
   public String toString() { return "" + value; }
}

public class Main {
   public static void main(String... args) throws NoSuchFieldException, IllegalAccessException {
       Test test = new Test(12345);
       System.out.println("test= "+test);

       Field value = Test.class.getDeclaredField("value");
       value.setAccessible(true);
       System.out.println("test.value= "+value.get(test));
       value.set(test, 99999);
       System.out.println("test= "+test);
       System.out.println("test.value= "+value.get(test));
   }
}

打印

test= 12345
test.value= 12345
test= 99999
test.value= 99999

3
我猜测这是通过反射目标类型并使用反射直接设置字段来完成的。
我不是Java程序员,但我相信Java具有类似于我使用的.NET的反射支持。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接