hibernate问题:关于lazy加载对于many-to-one对象的load问题。储存的时候是子类,load出来的是基类的对象。
使用lazy加载,储存的时候是子类,load出来的是基类的对象。
比如:
class person {
Address addr;
}
class Address {
String id;
}
class EmailAddress extends Address {
String name;
}
存储:
person p = new person();
EmailAddress addr = new EmailAddress();
addr.id = "001";
addr.name = "test";
p.addr = addr;
XXX.save(p);
但后来load的时候,如果没有使用lazy,也就是说lazy="false",那么取出来的p.addr是一个EmailAddress对象,可是如果使用lazy,也就是说lazy="true",取出来的p.addr却是一个Address对象。
强制转换都不行。也就是说我还必须去数据库中,根据这个Address的id再去取一下才能得到一个EmailAddress对象。为什么?有没有什么解决办法?谢谢。