保存,合并有时不提交?为什么?

时间:2012-05-04 16:03:19

标签: java hibernate

您好我的Java Hibernate有问题, 我有一个名为'Barang'的实体,我有一个创建新Barang或更新它的功能。 有时它工作正常,但是当我一次又一次地尝试它时,该功能无法正常工作。

这是我的创建和合并代码:

static SessionFactory session = NewHibernateUtil.getSessionFactory();

public Session opennSession(){
   return session.openSession();
}

public void addBarang(Barang b) {
    Session sess = this.opennSession();
    org.hibernate.Transaction t = sess.beginTransaction();
    sess.save(b);
    t.commit();

}


public void updateBarang(Barang b) {
    Session sess = this.opennSession();
    org.hibernate.Transaction t = sess.beginTransaction();
    sess.merge(b);
    t.commit();

}

让它更令人困惑的是,我有另一个实体可以完美地使用保存或合并功能。我已经多次对它进行了比较,我确信代码很好。

请帮我解决这个问题。 Thx提前

如果你需要一些我正在使用的代码,我可以在这里发布。 所以请告诉我你是否需要它。 :d

这是我的hibernate.cfg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD     3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/rumah</property>
    <property name="hibernate.connection.username">admin</property>
    <property name="hibernate.connection.password">admin</property>
    <mapping class="entity.Pelanggan"/>
    <mapping class="entity.Penjualan"/>
    <mapping class="entity.PenjualanBarang"/>
    <mapping class="entity.PenjualanBarangPK"/>
    <mapping class="entity.Barang"/>
  </session-factory>
</hibernate-configuration>

1 个答案:

答案 0 :(得分:0)

我不确定在交易中进行合并是否有任何理由,因为没有其他事情发生,所以事实上它是一个单操作交易。

我建议您尝试刷新会话,看看是否有帮助:

sess.merge(b);
sess.flush();