【发布时间】:2014-06-05 10:59:06
【问题描述】:
我得到了一些单元测试,将一些Person 数据存储到数据库中。为此,我使用EntityManagerFactory。
@Test
public void findPersonById() {
personDao.savePerson(new Person("Hans"));
Person person = new Person("Peter");
personDao.savePerson(person);
Long id = person.getId();
flushAndClear();
person = personDao.findById(id);
assertThat(person.getName(), is("Peter"));
}
在哪里
private EntityManager entityManager;
public Person savePerson(Person person) {
entityManager.persist(person);
return person;
}
和
public Person findById(Long id) {
Person person = entityManager.find(Person.class, id);
return person;
}
使用这个 Base-Test 类
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.Before;
public class AbstractDaoTest {
protected EntityManager entityManager = Persistence.createEntityManagerFactory("DefaultPersistenceUnit")
.createEntityManager();
protected PersonDao personDao = new PersonDao();
@Before
public void setUp() {
personDao.setEntityManager(entityManager);
entityManager.getTransaction().begin();
}
@After
public void tearDown() {
entityManager.getTransaction().rollback();
}
protected void flushAndClear() {
entityManager.flush();
entityManager.clear();
}
}
我的单元测试运行绿色,但是当我调试这个测试时,我在 db 上看不到任何数据(使用 squirrel)。调试器当前在哪一步无关紧要,表始终为空。我正在为松鼠使用以下配置:
jdbc:h2:file:~/test;DB_CLOSE_DELAY=-1;LOCK_MODE=0;AUTO_SERVER=TRUE
with Driver: H2
你能帮忙解决这个问题吗?
【问题讨论】:
-
您是否将数据保存在事务中?
-
他在
person引用上明确调用persist。他还刷新了交易。 -
是的,它发生在事务中,我编辑它。
-
克里斯检查我的答案
标签: java hibernate h2 squirrel-sql