这是我的spring4集成hibernate5的配置
这是我的事物管理配置
这是baseDaoImpl类实现了baseDao接口
package com.skill.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository("baseDao")
public class BaseDaoImpl implements BaseDao
{
private SessionFactory sessionFactory;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory)
{
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory()
{
return sessionFactory;
}
public Session getCurrentSession()
{
return getSessionFactory().getCurrentSession();
}
public <T> T getEntityBy(Class<T> T,Integer id)
{
return getCurrentSession().get(T, id);
}
userDaoImpl 继承了baseDaoImpl 实例userDao接口,userDao接口继承BaseDao接口
package com.skill.dao.userDao.impl;
import org.springframework.stereotype.Repository;
import com.skill.dao.BaseDaoImpl;
import com.skill.dao.userDao.UserDao;
import com.skill.model.User;
@Repository("userDao")
public class UserDaoImpl extends BaseDaoImpl implements UserDao
{
@Override
public User getUserBy(Integer id)
{
return super.getEntityBy(User.class, id);
}
}
userServiceImpl实现类调用userService
package com.skill.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.skill.dao.userDao.UserDao;
import com.skill.model.User;
import com.skill.service.UserService;
@Service("userService")
public class UserServiceImpl implements UserService
{
@Autowired
private UserDao userDao;
@Override
public User findUserBy(Integer id)
{
return userDao.getUserBy(id);
}
}
这个是写的测试方法
package com.skill.test;
import org.jboss.logging.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.skill.model.User;
import com.skill.service.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring.xml"})
public class FunctionTest
{
private Logger logger = Logger.getLogger(FunctionTest.class);
@Autowired
UserService userService;
@Test
public void testJDBC()
{
User user = userService.findUserBy(2);
logger.info("查询结果是:id--->"+user.getId()+"\tname--->"+ user.getUserName());
}
}
然而实际的测试结果是这样的
INFO: 查询结果是:id--->2 name--->null
有ID却没有name,当我在事物中把readonly去掉时,hibernate会先差一遍接着马上就update了。
Hibernate:
select
user0_.ID as ID1_0_0_,
user0_.PASSWORD as PASSWORD2_0_0_,
user0_.USERNAME as USERNAME3_0_0_
from
USER_TB user0_
where
user0_.ID=?
Hibernate:
update
USER_TB
set
PASSWORD=?,
USERNAME=?
where
ID=?
在事物中加上readonly=true后
不会update,但是还是没有结果,哪位大哥帮帮我,看看是哪里的问题!