हाइबरनेट कैसे एक जावा क्षेत्र के निजी क्षेत्र/विधि तक पहुंच सकता है, उदाहरण के लिए @Id सेट करने के लिए?कैसे एक निजी क्षेत्र का उपयोग हाइबरनेट कर सकते हैं?
धन्यवाद
हाइबरनेट कैसे एक जावा क्षेत्र के निजी क्षेत्र/विधि तक पहुंच सकता है, उदाहरण के लिए @Id सेट करने के लिए?कैसे एक निजी क्षेत्र का उपयोग हाइबरनेट कर सकते हैं?
धन्यवाद
क्रिप्प्ड्समुर्फ की तरह, यह प्रतिबिंब का उपयोग करता है। Reflection: Breaking all the Rules और Hibernate: Preserving an Object's Contract देखें।
एक अनुमान में मैं कहूँगा कि इस
लक्ष्य प्रकार को दर्शाती और खेतों की स्थापना सीधे का उपयोग कर प्रतिबिंब द्वारा किया जाता है मैं एक जावा प्रोग्रामर नहीं हूँ, लेकिन मेरा मानना है कि जावा प्रतिबिंब समर्थन समान है .NET के लिए जो मैं उपयोग करता हूं
प्रयास करें
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