在hibernate中使用了继承,现在根据ID已取得父类的实例,则样取得其对用子类的类型
例如:
  Product product = dao.loadById(id);//直接调用hibernateTemplate.loadById
  if (product  instanceof Book) {
  doSomething();
} else if (product  instanceof Sign) {
           doSomething();
        }但product被cglib代理后取不到真正类型我知道可以取消延迟或者用get,但这样就不能实现数据的延迟加载有没有什么好的办法

解决方案 »

  1.   

    我记得可以,但是我还是确认了下,你类继承错了吧。
    我还特意在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 {
      

  2.   

    楼主可以试一下连接抓取把数据取出来这样就可以不用考虑延迟加载问题
    http://book.csdn.net/bookfiles/321/10032113046.shtml 希望对楼主有用
      

  3.   

    Java code         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 {