@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {HibernateConfigTest.class})
@Transactional
@Sql(scripts = {"api_routes.sql",
"profile.sql",
"status.sql",
"user.sql",
"game_token.sql",
"game.sql",
"message.sql"},
config = @SqlConfig(transactionMode = ISOLATED),
executionPhase = ExecutionPhase.BEFORE_TEST_METHOD)
@Sql(scripts = "delete_data.sql",
executionPhase = ExecutionPhase.AFTER_TEST_METHOD)
public class GameDaoTest {
@Autowired
private GameDao gameDao;
@Test
public void getGetRecentGames() {
Game game = null;
for (int i = 0; i < 1000; i++) {
game = new Game(i + 1000);
game.setStartedAt(DateUtils.getCurrentUTCDate());
gameDao.save("game", game);
}
List<Game> recentGames = gameDao.getRecentGames(1000);
assertNotNull(recentGames);
assertEquals(1000, recentGames.size());
}
}
当我到达行hibernate打印出所有插入语句。不幸的是,当检索游戏时,我没有找到插入的游戏。有什么方法可以检索这些游戏吗?也许更好的问题是我如何将这些插入到他们自己的事务中,以便它们被持续用于后续的方法?春季休眠在测试中保存实体不持久
这里是AbstractDao的是GameDao扩展:
public class AbstractDao {
@PersistenceContext
protected EntityManager entityManager;
protected Session getSession() {
return entityManager.unwrap(Session.class);
}
public void save(Object entity) {
getSession().save(entity);
}
public void save(String entityName, Object entity) {
getSession().save(entityName, entity);
}
public void persist(Object entity) {
getSession().persist(entity);
}
}
的坚持方法抛出了,我不熟悉一些脱离实体理由例外。
您能否显示gameDao.save()方法? –
@Bruno_Ferreira添加了保存方法 –
用户拥有EntityManager,但是通过提取会话并执行(等效)方法,不必要地抛出可移植性? –