2
此代码有什么问题? SQL命令没有完成,使用show_sql,我能够看到发出的第一个sql命令,然后它将无限期地留在那里 - 程序不会继续。Sql命令无法完成 - 在控制台中挂起 - 休眠
public class PersonDao {
private Configuration configuration;
private SessionFactory sessionFactory;
private Session session;
public PersonDao() {
configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
}
public Person addPerson(Person p)
{
Transaction transaction = null;
try
{
session = sessionFactory.openSession();
transaction = session.beginTransaction();
System.out.println("Before person add");
session.save(p);
System.out.println("Person added");
transaction.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
session.flush();
session.close();
}
return p;
}
@SuppressWarnings("finally")
public boolean deletePerson(long personId)
{
boolean issuccessful = false;
Transaction tx = null;
try {
session = sessionFactory.openSession();
tx = session.beginTransaction();
Object persistentInstance = session.load(Person.class, personId);
if (persistentInstance != null) {
((Person)persistentInstance).getResponses().clear();
((Person)persistentInstance).getOwnedEvents().clear();
session.delete(persistentInstance);
}
session.getTransaction().commit();
} catch (Exception e) {
tx.rollback();
issuccessful = false;
e.printStackTrace();
} finally {
session.flush();
session.close();
return issuccessful;
}
}
嗨,这事因为早在sqlplus,我正发出一些DML命令后,我并没有发出“提交”。因此,该应用程序在eclipse/hibernate中发出SQL语句时就挂起了。 – jrd