有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何使用Hibernate(Java)复制记录?

在同一个表中复制记录的最佳方式是什么

诸如此类:

Address address = AddressDAO.get(id);
address.setId(null);
AddressDAO.add(address);

共 (5) 个答案

  1. # 1 楼答案

    在hibernate中对该对象使用级联逐出

    然后

    Address address = AddressDAO.get(id);
     AddressDAO.evict(address); //Internally session.evict(address);
    address.setId(null); // If id is autogenerated
    AddressDAO.add(address);
    
  2. # 2 楼答案

    我建议你试试。如果adress仍然是持久的(会话绑定),我会认为会有问题。在将id设置为null之前,可能需要一个session.evict(address)

  3. # 3 楼答案

    是的,应该有用

    我不确定hibernate是否没有检查对象引用,因此如果这不起作用,您可能需要创建一个新实例并复制所有属性(使用BeanUtils.copyProperties,甚至BeanUtils.cloneBean(..)),然后将ID设置为null/0

  4. # 4 楼答案

    这是可行的,但最好是在你的域模式下表达你的意图(克隆)。将字段设置为null只是一个实现细节,没有任何意义

    Address address = AddressDAO.get(id);
    Address clone = address.cloneMe();
    AddressDAO.add(clone);
    
  5. # 5 楼答案

    这不会是一个很深的副本。。。因此,您的副本将引用原始对象的子对象