public class BaseDAO<T> implements IBaseDAO<T> { @Resource protected SessionFactory sessionFactory; public Session getSession() { //return HibernateSessionFactory.getSession(); return sessionFactory.getCurrentSession(); } //........ public void saveOrUpdate(T transientInstance) { getSession().saveOrUpdate(transientInstance); } }
如上,就是这个basedao,本人用泛型T将saveOrUpdate方法统一写在一起,应该没问题吧,但是本人在调saveOrUpdate时(service层调用它),程序平稳执行,不报异常,但就是保存/更新都没有进到数据库
可能是什么原因啊,主键在新增是null,在更新时值也是对的,也不报错,就是存不了,是怎么回事啊?
假如本人把方法写到具体的dao中,T用具体的类型替换,就可以了,莫非真是泛型的原因,本人是摸不着头脑了啊,哪位大哥给本人指点一二啊。
解决方案
30
你在用BaseDAO<T> 时候有给出具体的泛型吗
例如 new BaseDAO<person>()
例如 new BaseDAO<person>()
10
为什么要用泛型?本人在hibernate的savaorupdate方法本人一般传入Object类型,只要xml有配置的实体类传入他都可以自动识别的。