0

同じ列を持つ 2 つのテーブル (Customer と CustomerTemp) があります。Customer テーブルからレコードを取得し、CustomerTemp テーブルに追加しています。取得したレコードは custDetails オブジェクトとして保存されます。次の API を使用しています。

 void saveOrUpdate(String entityName,
                  Object object)

@Entity アノテーションを使用して、Customer と CustomerTemp という 2 つのエンティティを宣言しました。エンティティ名は、saveOrUpdate API で使用されます。

session.saveOrUpdate("CustomerTemp", custDetails); 

同じレコードを CustomerTemp テーブルに追加/更新します。どういうわけか、休止状態が Customer テーブルのレコードを追加/更新しています。

ドキュメントに従って、休止状態は CustomerTemp テーブルにレコードを追加する必要があります。何が欠けているのかわからない。

アップデート:

テスト目的で、2 つのテーブル (テーブル 1 とテーブル 2) を作成しました。

@Entity(name="mytable1")
public class table1 implements Serializable {
    private static final long serialVersionUID = 3627342236515154416L;

    @Id
    @GeneratedValue
    private int id;

    @Column(length=20)
    private String Name;
          // Getters and setters...
}

@Entity(name="mytable2")
public class table2 implements Serializable {

    private static final long serialVersionUID = -2203149737718957786L;

    @Id
    @GeneratedValue
    private int id;

    @Column(length=20)
    private String Name;
          // Getters and setters...
}

table1 を使用してオブジェクトを作成し、レコードが table2 に保存されることを期待して myTable2 エンティティで saveOrUpdate を使用しようとしました。ただし、saveOrUpdate で指定されたエンティティ名に関係なく、レコードは常に table1 に永続化されます。

    Session session = getSessionFactory().getCurrentSession();  
    Transaction tx ;

    table1 tb1 = new table1();
    tb1.setName("Shirish");
    tx = session.beginTransaction();
    session.saveOrUpdate("mytable2", tb1);
    tx.commit();

よろしく、 - シリッシュ

4

1 に答える 1

0

私は、Javaオブジェクトを複製することによって、問題で指定されたアプローチを使用できます。table1 は、新しい table2 オブジェクトを作成するためのクローンです。しかし、これは複数の *-to-Many 関係が関係する非常に複雑なプロセスです。

後で、休止状態でテーブルを定義するために XML アプローチを使用しようとしました。詳細については
、Hibernate XML マッピング ファイルで同じ POJO を複数のテーブルにマッピングするを参照してください。他の DB 操作でエンティティを使用する前に、session.clear() を使用してエンティティを切り離す必要がある場合があることに注意してください。

他のアプローチは歓迎されます。

この場合、同じ Java オブジェクトに基づいてテーブルを定義しているため、クローニングは必要ありません。

よろしく、

シリッシュ

于 2012-12-13T01:17:39.793 に答える