在hibernate中使用了继承,现在根据ID已取得父类的实例,则样取得其对用子类的类型
例如:
Product product = dao.loadById(id);//直接调用hibernateTemplate.loadById
if (product instanceof Book) {
doSomething();
} else if (product instanceof Sign) {
doSomething();
}但product被cglib代理后取不到真正类型我知道可以取消延迟或者用get,但这样就不能实现数据的延迟加载有没有什么好的办法
例如:
Product product = dao.loadById(id);//直接调用hibernateTemplate.loadById
if (product instanceof Book) {
doSomething();
} else if (product instanceof Sign) {
doSomething();
}但product被cglib代理后取不到真正类型我知道可以取消延迟或者用get,但这样就不能实现数据的延迟加载有没有什么好的办法
解决方案 »
- Java操作Excel???
- 实体继承注解的困惑
- hibernate 测试时候的空指针 在线等
- 我的Tomcat出问题了,工作状态总是debug
- SSH整合时出现的问题!
- 用struts2的bean标签new一个javabean对象时javabean的构造方法怎么不起作用呢?难道new时没调用构造方法?
- 需要代码
- struts中接收表单的中文数据,会乱码,怎样解决呀,请帮忙了!
- socket传输数据结构的问题?????
- 大牛帮我看看这个错误吧~~(java.io.IOException: misplaced continuation line)
- weblogic懒汉模式远程调用ejb???
- inputvalue_display.innerHTML前面的ID值"inputvalue_display"可否在定义函数的时候作为一个变量来使用?
我还特意在debug下看了内存,是cglib对象,没问题的。
如果cglib像你想的那样就没用了。
Session session = sessionFactory.openSession();
// session.beginTransaction();
// Post p = new Post();
// p.setTitle("title");
// p.setPosttime(new Date());
// p.setContent("content");
// session.save(p);
// session.getTransaction().commit();
Post post = (Post) session.load(Post.class, new Integer(1));
if (post instanceof AbstractPost) {
System.out.println("1");
}
public class Post extends AbstractPost implements java.io.Serializable {
http://book.csdn.net/bookfiles/321/10032113046.shtml 希望对楼主有用
// session.beginTransaction();
// Post p = new Post();
// p.setTitle("title");
// p.setPosttime(new Date());
// p.setContent("content");
// session.save(p);
// session.getTransaction().commit();
Post post = (Post) session.load(Post.class, new Integer(1));
if (post instanceof AbstractPost) {
System.out.println("1");
}
public class Post extends AbstractPost implements java.io.Serializable {