@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,但是通過提取會話並執行(等效)方法,不必要地拋出可移植性? –