Java 使用hibernate和webservices反序列化后无法持久化图形列表
我有两个应用程序服务器和两个数据库服务器,名为Xapp Xdbase-Yapp Ydabse。在Xapp和Yapp中使用hibernate。我需要通过webservice同步数据。用一个简单的对象图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()
@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说@