为什么不使用相同的jdbcurl创建一个使用“create-drop”配置的新SessionFactory,然后当您完成后,加载并执行import.sql脚本的内容?
@Test
public void test() {
HsqlSessionFactoryCreator creator = HsqlSessionFactoryCreator.getInstance();
try (SessionFactory sessionFactory1 = creator.create()) {
try (Session session = sessionFactory1.openSession()) {
Transaction transaction = session.beginTransaction();
try {
createEntity(...);
transaction.commit();
} catch (Throwable throwable) {
transaction.rollback();
}
}
try (Session session = sessionFactory1.openSession()) {
System.err.println("SessionFactory1 " + session.createCriteria(MyEntity.class).list());
}
try (Session session = sessionFactory1.openSession()) {
Transaction transaction = session.beginTransaction();
try {
createEntity(...);
transaction.commit();
} catch (Throwable throwable) {
transaction.rollback();
}
}
try (Session session = sessionFactory1.openSession()) {
System.err.println("SessionFactory1 " + session.createCriteria(MyEntity.class).list());
}
try (SessionFactory sessionFactory2 = creator.create()) {
try (Session session = sessionFactory1.openSession()) {
System.err.println("SessionFactory1 after creating SessionFactory2 " + session.createCriteria(MyEntity.class).list());
}
try (Session session = sessionFactory2.openSession()) {
System.err.println("SessionFactory2 " + session.createCriteria(MyEntity.class).list());
}
try (Session session = sessionFactory1.openSession()) {
Transaction transaction = session.beginTransaction();
try {
createEntity(...);
transaction.commit();
} catch (Throwable throwable) {
transaction.rollback();
}
}
try (Session session = sessionFactory1.openSession()) {
System.err.println("SessionFactory1 " + session.createCriteria(MyEntity.class).list());
}
try (Session session = sessionFactory2.openSession()) {
System.err.println("SessionFactory2 " + session.createCriteria(MyEntity.class).list());
}
}
}
}
当我运行测试(已创建了关于实体的知识,一个SessionFactory)我得到以下输出
SessionFactory1 [MyEntity[ID 9c81b1fa-04f5-4572-a945-e16d13ffc187]]
SessionFactory1 [MyEntity[ID 550e7c5d-6c8c-40ea-8f4b-cfdbf2d92075], MyEntity[ID 9c81b1fa-04f5-4572-a945-e16d13ffc187]]
SessionFactory1 after creating SessionFactory2 []
SessionFactory2 []
SessionFactory1 [MyEntity[ID 3748127d-6872-4d9c-84fb-1d83b85c9fe0]]
SessionFactory2 [MyEntity[ID 3748127d-6872-4d9c-84fb-1d83b85c9fe0]]
这似乎是迄今为止最接近的解决方案,但我有点惊讶没有更自动的东西。再过几天会提出这个问题。 – bphilipnyc
很高兴为你效劳,将多看一看,看看我是否能找到更直接的东西。 –