休止状態プロセスをテストするための単体テストがあります。これを実行させてください
以下は私のAbstractDAOです
public abstract class BaseDAO {
protected JdbcTemplate jdbcTemplate;
protected SessionFactory sessionFactory;
protected NamedParameterJdbcTemplate namedParameterJdbcTemplate;
...
@Autowired
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
@Autowired
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
}
これが私のconcreteDAOであり、BaseDAOを拡張します
public class LoginDAO extends BaseDAO implements InitializingBean {
private static final Logger log = Logger.getLogger(LoginDAO.class);
private MD5PasswordEncoder passwordEncoder;
private SaltSource saltSource;
public User getLoggedinUserByUserid(Long userid){
log.info("in getLoggedinUserByUserid");
User result = null;
Session session = sessionFactory.openSession();
try {
session.beginTransaction();
result = (User) session.get(User.class, userid);
session.getTransaction().rollback();
session.close();
} catch (Exception e) {
log.error(e,e);
session.getTransaction().rollback();
session.close();
}
return result;
}
...
}
これが私のジュニットです
@Test
public void shouldReturnCorrectlyUserWhenCallingGetLoggedinUserByUseridMethod() {
// Given When
User adminUser = loginDAO.getLoggedinUserByUserid(1l);
// Then
assertNotNull(adminUser);
assertEquals("sadmin", adminUser.getUsername());
assertEquals("ecedee8662a0bcd15c157e5734056ac5", adminUser.getPassword());
assertEquals(1, adminUser.getStatus());
assertEquals("TS", adminUser.getFirstname());
assertEquals("Sys Admin Person", adminUser.getLastname());
assertEquals(0, adminUser.getIdType());
assertTrue(adminUser.getEnabled());
assertTrue(adminUser.getAuthenLocal());
assertTrue(StringUtils.isBlank(adminUser.getTitle()));
}
SessionFactory は BaseDAO に問題なく注入されましたが
Session session = sessionFactory.openSession();
、LoginDAO
それが入ると null になりました!
これはどのように起こりますか?説明が必要で、この問題を解決するにはどうすればよいですか?