当前位置: 首页 > 知识库问答 >
问题:

如何使用Hibernate[复制]创建实体的副本

姬高扬
2023-03-14

我有一个实体用户:

@Entity
@Table(name = "users")
public class User{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name = "name", nullable = false)
      private String name;

     @OneToMany(fetch = FetchType.LAZY, mappedBy = "parentid", cascade=CascadeType.ALL)
    private List<Lesson> lessonList=new ArrayList<>();
}

和实体课程

    @Entity
    @Table(name = "lesson")
    public class Lesson{

        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private int id;

        @Column(name = "name", nullable = false)
          private String name;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "parentid")
    private User parentid;

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "parentid2", cascade=CascadeType.ALL)
        private List<Exercise> exerciseList=new ArrayList<>();
    }

我需要制作 user1 课程的副本(深度副本),并将此副本添加到另一个用户 2。最后,我需要用户1有课程,用户2有课程的副本。

共有1个答案

宇文嘉勋
2023-03-14

最简单的方法是使用XStream api。用<code>@xstreamitfield</code>注释@Id字段,然后将对象写入xml,如下所示。

XStream xstream = new XStream(new StaxDriver());
String xml = xstream.toXML(yourObject);

把它读回来

YourObject yourObject = (Person)xstream.fromXML(xml);
 类似资料:
  • 问题内容: 我试图用来向没有定义主键的表中插入数据。 但是事实是该表的两个字段一起在表中是唯一的。我如何使用hibernate注释实现相同的目的? 这是我的代码。 问题答案: 您可以使用和创建复合键,并将其与您的实体进行映射。例如: 然后在Java代码中使用常规方式来持久化实体。 参考:http : //docs.jboss.org/hibernate/annotations/3.5/refere

  • 直截了当地说:我有一个包含项目的小组。我想用外键处理这个关联,这就是为什么它有一个mappedby标记。我的问题是,如果我查询组,我会进入一个有限循环,其中组列出了包含该组的项目,该组列出了再次包含该组的项目。。。。。等等我的实体(最小版本): 有人能帮助如何避免这个循环吗?如果我在DBGroup中将fetchtype更改为懒,我就会得到一个LazyLaunalizationEXcep。 感谢您的

  • 问题内容: 使用Jhipster和Postgresql,我创建了一个实体“ Customer”。当我使用Angular UI将数据添加到该实体或将其添加到API时,可以使用UI上的搜索表单来搜索此数据。 但是,当我直接在数据库中插入数据时,即使在应用程序重新启动后也无法搜索数据。搜索仍然(仅)对通过UI添加的数据有效。 我是Elasticsearch的新手,不知道在后端插入数据并将其提供给Elas

  • 问题内容: 据我所知,创建一个动态Java代理需要一个接口来处理该代理。但是,Hibernate似乎可以管理其动态代理生成,而无需为实体类提供一个写接口。它是如何做到的?Hibernate文档的唯一线索是这样的事实,即类必须至少具有一个包可见的构造函数才能生成代理。 Hibernate是否使用自定义类加载器进行运行时字节码工程设计?该文档表明情况并非如此。那么他们如何围绕具体实体对象创建代理包装器

  • 问题内容: 我想在数据库中复制实体集合。我使用以下方法检索该集合: 现在,我想复制“类别”列表,并使用EntityManager保留它。我正在使用JPA /hibernate。 更新 在知道如何分离我的实体之后,我需要知道要分离什么:当前代码: 这引发了异常。 我认为他想重新加载类别,因为我已经将它们分离了。我现在该怎么办? 问题答案: 亚伦·迪吉拉(AaronDiguila)的答案是去这里的方式