从现有对象创建新对象

时间:2014-08-05 17:49:54

标签: mysql hibernate jpa

我有两个实体,Participante和Emitente。 Emitente扩展了Participante。

例如:

@Entity
@Cacheable(true)
@Default
@Table(name = "participantes")
@Inheritance(strategy = InheritanceType.JOINED)
public class Participante implements IEntity {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;
    @Size(max = 10)
    @Column(name = "codigo", nullable = true, length = 20)
    private String codigo;
    ...
}

@Entity
@Cacheable(true)
@Any
@Table(name = "emitentes")
public class Emitente extends Participante {

     //other methods and properties

}

在我的应用程序中,我有两个屏幕条目,仅为Participantes注册一个,为注册Emitentes注册一个。 问题是在某些情况下我需要从已经存在的Participante创建一个新的Emitente。

例如:我签署了一个参与者,保存在数据库中的所有内容,我决定有一个Emitente。然后我进入Emitente屏幕并将Participante拉到它,添加与Emitente相关的其他属性并单击save。

有没有办法自动执行此操作,还是必须在数据库中手动设置属性属性?

或者说,Hibernate可以为我做这个吗?

如果有人无法理解我知道我试着更好地解释。

感谢所有人,抱歉我的英语不是最好的!


为了更好地解释我创建的这个示例应用程序可以通过以下链接下载: Aplicaçao

要运行它,只需使用NetBeans并创建一个名为" testeHeranca"的MySql DB,这种方式更好解释。

感谢所有人。

2 个答案:

答案 0 :(得分:0)

(抱歉还不能发表评论)

你必须初始化Emitente。 这是Emitente表中的全新条目。

在Emitente中,只需创建一个构造函数,该构造函数接受Participante对象,并基于此创建Emitente。

答案 1 :(得分:0)

我最终在巴西网站上创建了几个论坛,我得出结论,我将改变我的estratédia实体!

认为JPA使用有限的多态性,就像更改对象的类型一样。

在这种特定情况下,可行的替代方案是将继承关系的类型更改为聚合,即“Issuer”具有“Participant”类型的属性。因此,表格不需要更改,您可以随时单独包含实体。

按照葡萄牙语中的StackOverflow链接。

ps.stackoverflow

我感谢所有试图帮助我的人!