2013-11-14 158 views
-2

我得到一個NullPointerException與此Java DAO:的NullPointerException在SELECT查詢春季休眠

public abstract class AbstractDAO<BEAN extends Serializable, 
            ID extends Serializable> 
            extends HibernateDaoSupport 
            implements IDAO<BEAN, ID> { 
    private Class<BEAN> beanClass; 
    public AbstractDAO() { 
    } 
    public AbstractDAO(Class<BEAN> clazz) { 
     beanClass = clazz; 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    @Transactional 
    public BEAN findById(ID id) { 
     @SuppressWarnings("unchecked") 
     BEAN instance = 
      (BEAN) getSessionFactory().getCurrentSession().get(beanClass, id); 
     return instance; 
    } 
} 
public class TestCaseDAO extends AbstractDAO<TestCase, Long> { 
    public TestCaseDAO(Class<TestCase> clazz) { 
     super(clazz); 
    } 
    public TestCaseDAO() { 
    } 
    @Override 
    public void persist(TestCase transientInstance) { 
    } 
} 

例外,我得到:

Exception in thread "main" java.lang.NullPointerException 

任何人都可以請幫我嗎?

回答

1

您無需指定beanClass

<bean id="testCaseDAO" class="com.germin8.autom8.db.hb.dao.TestCaseDAO" 
    parent="abstractDAO"></bean> 

Spring將使用的TestCaseDAO無參數的構造函數裏面是空的創建TestCaseDAO豆。

當該代碼執行

BEAN instance = (BEAN) getSessionFactory().getCurrentSession().get(beanClass, id); 

beanClassnull。這會拋出一個NullPointerException下線。

既然你知道TestCaseDAOTestCase只,改爲

public TestCaseDAO() { 
    super(TestCase.class); 
} 

,擺脫你的其他構造。對其他AbstractDAO實現執行類似的更改。