Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.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 使用hibernate和webservices反序列化后无法持久化图形列表_Java_Hibernate_Web Services - Fatal编程技术网

Java 使用hibernate和webservices反序列化后无法持久化图形列表

Java 使用hibernate和webservices反序列化后无法持久化图形列表,java,hibernate,web-services,Java,Hibernate,Web Services,我有两个应用程序服务器和两个数据库服务器,名为Xapp Xdbase-Yapp Ydabse。在Xapp和Yapp中使用hibernate。我需要通过webservice同步数据。用一个简单的对象图 @Entity @Table(name="A_table") public class A extends PersistentObject { @Column(name="user") private String user; @ElementCollection()

我有两个应用程序服务器和两个数据库服务器,名为Xapp Xdbase-Yapp Ydabse。在Xapp和Yapp中使用hibernate。我需要通过webservice同步数据。用一个简单的对象图

@Entity
@Table(name="A_table")
public class A extends PersistentObject 
{
    @Column(name="user")
    private String user;

    @ElementCollection()
    @Enumerated(EnumType.STRING)
    @Column(name="b_column")
    @CollectionTable(name="B_table")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<B> bList= new Arralist<B>();


    /* Here comes getter and setter for user and bList */
}

public enum B {
    One,Two,Three
}
@实体
@表(name=“A_表”)
公共类A扩展了PersistentObject
{
@列(name=“user”)
私有字符串用户;
@ElementCollection()
@枚举(EnumType.STRING)
@列(name=“b_列”)
@CollectionTable(name=“B_table”)
@LazyCollection(LazyCollectionOption.FALSE)
私有列表bList=new Arralist();
/*下面是用户和bList的getter和setter*/
}
公共枚举B{
一,二,三
}
PersistentObject是可序列化的,并且具有样板代码

XApp和YApp有这些类

我在XApp中创建了一个新的a对象(命名为Ainstance),其中包含两个B对象的B列表。使用Yapp上的Web服务对A进行序列化并将其发送给Yapp。在Yapp,我使用存储库repo.saveOrUpdate(Ainstance)反序列化传入的A;一切都很好。Ydbase中的B_表有2条记录

然后在XApp中使用旧的Ainstance,在列表中添加一个新的B并更改用户。然后再发一封信。它在Yapp进行了完美的反序列化,在bList中记录了3B。但当调用repo.saveOrUpdate(Ainstance)时,用户更改将应用于dbase,但B_表有2条记录。没有错误,什么都没有


我试着合并Ainstance@YApp,然后运气不佳地更新。列表有什么问题?我尝试了一个包含类类型的列表,但它们也没有持久化。错在哪里?

再读一读,发现答案是“复制”

在以下情况下,使用replicate()代替save()/persist() 您需要保存具有给定标识符的实体,尽管事实如此 所述实体的标识符被配置为生成

当某些实体(可能来自外部)出现时,它非常有用 系统)具有预先存在的标识符,而 同一类型需要生成它们的标识符

axtavt说@