我遇到以下代碼的問題,請我需要幫助。 在使用Hibernate的服務層中,我使用註釋來管理會話,這非常有效。Java和休眠 - 使用接口時的會話管理
@Override
@Transactional
public Response delete(Integer id) throws Exception {
Response response = new Response();
try {
response.setData(videoDao.delete(id));
} catch (Exception e) {
e.printStackTrace();
}
return response;
}
它調用了DAO層
@Override
public boolean delete(int id) throws Exception {
String query = "UPDATE " + this.entity +
" SET remove_date = '" + String.valueOf(new Date(0)) + "'" +
" WHERE id = " + id;
Query q = sessionFactory.getCurrentSession().createQuery(query);
return q.executeUpdate() > 0 ? true : false;
}
哪裏videoDao是實現接口的實體DAO層下面的方法。到現在爲止還挺好。
問題是,當我有另一種方法在videoDao不在我正在實現的接口中,在這種情況下,註釋不起作用,但我不知道如何管理服務層中的sessionFactory。我想我在使用接口中的方法時沒有問題,因爲Spring注入的是包含sessionFactory的istances,但是如果我手動執行它(因爲我不能使用注入的對象,因爲它是接口,而不是具有此方法的真實類)sessionFactory始終爲空。
public interface IDao {
public boolean delete(int id) throws Exception;
}
這是我如何定義與接口的刀在我的服務層:
@Autowired
IDao videoDao;
你能顯示代碼示例有關此主題的更多信息,您導致空SessionFactory的? –
@Faabass既然你正在自動裝配'IDao videoDao',你怎麼能夠調用接口中沒有指定的另一個方法呢? –
你是什麼意思'註釋不起作用'?請發佈您的videoDAO類的代碼,並與非繼承的方法,據說不工作 – yugo