1

私は休止状態と春のフレームワークの初心者です。休止状態のテンプレートを使用してデータベースに挿入したい。私のDAOコード:

public void save(News transientInstance) {
    log.debug("saving News instance");
    try {
        save(transientInstance);
        log.debug("save successful");
    } catch (RuntimeException re) {
        log.error("save failed", re);
        throw re;
    }
}

コントローラ

public void insert(NewsForm newsForm, RequestContext context) {
    NewsDAO NewsDAO = (NewsDAO) ApplicationContext.getApplicationContext().getBean("NewsDAO");


    News newNews = new News();
    Timestamp date = new Timestamp(System.currentTimeMillis());
    newNews.setDate(date);
    newNews.setTitle(newsForm.getTitle());
    newNews.setDescription(newsForm.getDescription());
    newNews.setBody(newsForm.getBody());
    newNews.setStatus(newsForm.getStatus());
    newNews.setUpdateDate(date);
    NewsDAO.save(newNews);
}

エラーは

Caused by: java.lang.StackOverflowError
at org.apache.commons.logging.impl.Log4JLogger.debug(Log4JLogger.java:177)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68)
dao.NewsDAO.save(NewsDAO.java:68) ...etc

このDAOコードは間違っていますか?

4

1 に答える 1

2

save メソッドが save メソッドを呼び出し、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出され、save メソッドが呼び出されます。 save メソッドを呼び出します...

save(transientInstance)で置き換えhibernateTemplate.save(transientInstance)ます。

(そして、Java の命名規則を尊重してください。変数は小文字で始まります)。

于 2012-05-24T09:46:55.373 に答える