代码之家  ›  专栏  ›  技术社区  ›  We are Borg

复制具有不同外键id的同一类的对象

  •  0
  • We are Borg  · 技术社区  · 11 年前

    我正在开发一个SpringMVC应用程序,在该应用程序中我正在编写一个方法来复制具有不同外键id的Object。 所以有两个类GroupAccount和GroupCanvas。一个GroupAccount可以有多个GroupCanvas。因此,当我说,我想复制一个GroupCanvas时,我想创建一个新的GroupCanvas对象,其所有值与之前的GroupCan画布中的值相同。是否有一些方法可以进行级联复制,因为GroupCanvas也有我想要复制的子对象? 我正在发布我的SQL代码,请看一下:

    CREATE TABLE groupaccount
    (
      groupid numeric NOT NULL,
      groupname character varying,
      adminusername character varying,
      blacklist character varying[],
      CONSTRAINT groupid PRIMARY KEY (groupid)
    )
    
    CREATE TABLE membercanvas
    (
      groupcanvasid integer NOT NULL,
      mcanvasname character varying,
      mcanvasnumber numeric,
      mcanvastitle character varying,
      mcanvasdate character varying,
      mcanvascreator character varying,
      mcanvasiteration character varying,
      groupid numeric NOT NULL,
      memberid integer NOT NULL,
      mcanvasimage bytea,
      sortorder numeric DEFAULT 0,
      CONSTRAINT mcanvasid PRIMARY KEY (groupcanvasid),
      CONSTRAINT groupaccount_membercanvas_fk FOREIGN KEY (groupid)
          REFERENCES groupaccount (groupid) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT groupmembers_membercanvas_fk FOREIGN KEY (memberid)
          REFERENCES groupmembers (memberid) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )
    CREATE TABLE membersection
    (
      msectionid integer NOT NULL,
      msectionname character varying,
      mxposition integer,
      myposition integer,
      groupcanvasid integer NOT NULL,
      CONSTRAINT msectionid PRIMARY KEY (msectionid),
      CONSTRAINT membercanvas_membersection_fk FOREIGN KEY (groupcanvasid)
          REFERENCES membercanvas (groupcanvasid) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )
    

    任何帮助都很好。非常感谢。:-)

    1 回复  |  直到 11 年前
        1
  •  1
  •   Master Slave    11 年前

    通常,为此,您可以使用 copy constructor

    但是,如果您只需要在特定的上下文中获取副本,那么最好实现服务方法并控制您复制的内容。作为相同的对象,您可以通过使用spring的 BeanUtils

    从文档中

    copyProperties(Object source, Object target)
    

    复制属性值 将给定的源bean转换为目标bean。

    copyProperties(Object source, Object target, String... ignoreProperties) 
    

    复制给定源bean的属性值 忽略给定的“ignoreProperties”。