Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 实体副本_Java_Entity Framework_Jpa_Entity_Jpa 2.0 - Fatal编程技术网

Java 实体副本

Java 实体副本,java,entity-framework,jpa,entity,jpa-2.0,Java,Entity Framework,Jpa,Entity,Jpa 2.0,我不能让这个工作,我没有找到我的特殊情况的例子。简言之:我有一个主要的实体与关系。现在我想复制一个子实体,并将这个新的子实体链接到主实体。我最好试着举一个简短的例子。我跳过了getter和setter方法以使其更短: 实体条目: @Entity public class Entry implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(

我不能让这个工作,我没有找到我的特殊情况的例子。简言之:我有一个主要的实体与关系。现在我想复制一个子实体,并将这个新的子实体链接到主实体。我最好试着举一个简短的例子。我跳过了getter和setter方法以使其更短:

实体条目:

@Entity
public class Entry implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @OneToMany(mappedBy = "entry", cascade=CascadeType.ALL)
    private List<EntryData> entriesDataList = new LinkedList<>();

    @OneToOne(cascade=CascadeType.ALL)
    private EntryData entryData;

}

有人能帮我解决这个问题吗?

您的
test的
id列
。EntryData
类映射为主键,因此
id列


我认为您在id列中插入了重复的值您的
测试的
id列
。EntryData
类映射为主键,因此
id列中不允许更新


我认为您在id列中插入了重复的值

,如何解决此问题?计划将主键更改为
null
。通过这种方式,我认为我可以生成一个新的
EntryData
实体,而不是覆盖旧的实体。将自动增量添加到该列我认为
GenerationType。如果它是
null
,则自动
将创建一个id?我已经使用了自动增量
GenerationType.AUTO
对应于MYSQLk中的AUTO increment,在mysql表中创建一个序列并修改代码,例如公共类ContactMaster实现可序列化的{@TableGenerator(name=“CONT_SEQGEN”,table=“sequence_GENERATOR”,pkColumnName=“SEQ_ID”,valueColumnName=“SEQ_ID_VAL”,pkColumnValue=“联系人ID”,allocationSize=1)@ID@GeneratedValue(策略=GenerationType.TABLE,generator=“CONT_SEQGEN”)@Column(name=“联系人ID”)public String contactId;我想要什么解决方案呢?我计划将主键更改为
null
。这样我认为可以生成一个新的
EntryData
实体,而不是覆盖旧实体。将自动增量添加到该列我认为
GenerationType.auto
将创建如果id为null,则为id。我已经使用了auto increment…
GenerationType。auto
对应于MYSQLk中的auto increment。请在mysql表中创建一个序列,并修改代码,例如,公共类ContactMaster实现可序列化的{@TableGenerator(name=“CONT SEQGEN”,table=“sequence\u GENERATOR,pkColumnName=“SEQ_ID”,valueColumnName=“SEQ_ID_VAL”,pkColumnValue=“CONTACT_ID”,allocationSize=1)@ID@GeneratedValue(strategy=GenerationType.TABLE,generator=“CONT_SEQGEN”)@Column(name=“CONTACT_ID”)public String contactId;我不是java开发人员,但在阅读文章后,我浏览了一下,看到了CascadeDetach,它分离了所有导航对象。这与您使用的框架有关吗?因为
cascade类型。all
我想我已经做了一个cascade分离。我不是java开发人员,但在阅读文章后,我是浏览并看到CascadeDetach,它分离所有导航对象。这与您正在使用的框架有关吗?因为使用了
CascadeType。all
我认为我已经进行了级联分离。
@Entity
public class EntryData implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String subject;

    @ManyToOne(optional = false)
    private Entry entry;    

    @ManyToMany(mappedBy = "entries", cascade = {CascadeType.ALL} )
    private List<EntryTag> tags = new LinkedList<>();

}
@Entity
public class EntryTag  implements Serializable{

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(unique=true)
    private String name;

    @ManyToMany() 
    private List<EntryData> entries = new LinkedList<>();        

}
@Stateless
public class NewEntryData {

    @PersistenceContext
    private EntityManager em;

    public void makeNewEntryData(){
        Entry e = em.find(Entry.class, 10);
        em.detach(e);
        EntryData ed = e.getEntryData();
        ed.setSubject("New Subject");
        ed.setId(null);
        for (Iterator<EntryTag> it = ed.getTags().iterator(); it.hasNext();) {
            it.next().addEntryData(ed);            
        }
        em.merge(e);
    }   
}
org.eclipse.persistence.exceptions.ValidationException
Exception Description: The attribute [id] of class [test.EntryData] is mapped to a primary key column in the database. Updates are not allowed.