0

こんにちは、Java Hibernate に問題があります。「Barang」というエンティティがあり、新しい Barang を作成または更新する機能があります。うまくいくこともありますが、何度もやってみると、機能がうまくいきません。

create と merge のコードは次のとおりです。

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>
4

1 に答える 1

0

他に何も起こっていないため、トランザクション内でマージを行う正当な理由があるかどうかはよくわかりません。実際、これは 1 回の操作のトランザクションです。

セッションをフラッシュして、それが役立つかどうかを確認することをお勧めします。

sess.merge(b);
sess.flush();
于 2012-05-04T16:31:05.690 に答える