0

我有 2 个具有相同列的表(Customer 和 CustomerTemp)。我正在从 Customer 表中检索记录并添加到 CustomerTemp 表。检索到的记录存储为 custDetails 对象。我正在使用以下 API:

 void saveOrUpdate(String entityName,
                  Object object)

我已经使用@Entity Annotation 声明了 2 个实体,即 Customer 和 CustomerTemp。实体名称用于 saveOrUpdate API。

session.saveOrUpdate("CustomerTemp", custDetails); 

将相同的记录添加/更新到 CustomerTemp 表中。不知何故,休眠正在客户表中添加/更新记录。

根据文档,休眠应该将记录添加到 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 创建了对象,并尝试将 saveOrUpdate 与 myTable2 实体一起使用,期望该记录将保存在 table2 中。但无论 saveOrUpdate 中提供的实体名称如何,记录始终保存到 table1。

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

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

问候, - Shirish

4

1 回答 1

0

我可以使用通过克隆 java 对象指定的方法。table1 被克隆以创建新的 table2 对象。但这确实是一个复杂的过程,其中涉及多个 *-to-Many 关系。

后来我尝试使用 XML 方法在 hibernate 中定义表。详情请参阅将
同一个 POJO 映射到 Hibernate XML 映射文件中的多个表。请注意,在其他数据库操作中使用实体之前,您可能需要使用 session.clear() 来分离实体。

欢迎任何其他方法。

在这种情况下,不需要克隆,因为我们正在定义基于相同 Java 对象的表。

问候,

希里什语

于 2012-12-13T01:17:39.793 回答