我有以下课程
class A {
private int field1;
private int field2;
private int field3;
private int field4;
}
Class B extends A {
private int field3;
private int field4;
}
Class C extends A {
private int field3;
private int field4;
}
基于A类的“field1”值,我需要访问B类字段或C类字段并设置父字段的值。
我正在使用orm映射xml for JPA。 A类表及其子类映射到不同的表,因此我将继承策略指定为JOINED。
我需要在POST-LOAD上转换A类中的字段,还需要设置A.“field3”和A.“field4”值,因此我指定了实体列表。
JPA查询在这些A,B,C的三个表和所有三个类的retreive值之间创建连接。
但是在加载后我只得到父类A.
我的问题是:如何访问B类和C类字段值?这样我就可以设置父字段值。
答案 0 :(得分:0)
从你的问题:
JPA查询在这些A,B,C的三个表和所有三个类的retreive值之间创建连接。
所以创建三个不同的类A,B和C,不要像你提供的那样继承。使用join将三个表检索到三个对象A,B和C. 现在你有三个对象a,b和c。现在检查a.field1的值并访问您的对象b或c。
答案 1 :(得分:0)
制作摘要。然后你可以 的实例来知道它是哪种类型并将其转换为该类型:
if (a instance of B) {
B b = (B) a;
} else if (a instance of C) {
C c = (C) a;
}