Java 合并Hibernate对象时出现的问题

Java 合并Hibernate对象时出现的问题,java,hibernate,web-services,soap,Java,Hibernate,Web Services,Soap,我刚开始在Stackoverflow上发布一些东西,但我很长时间都在使用它,它帮助我编写代码真是太棒了 我的问题是: 我收到一个由SOAP在WebService中填充的对象,如: @WebMethod(operationName = "DogUpdate") public @WebResult(name = "resultId") Long dogUpdate( @WebParam(name = "DogDto", header = true, mode = Mode.I

我刚开始在Stackoverflow上发布一些东西,但我很长时间都在使用它,它帮助我编写代码真是太棒了

我的问题是: 我收到一个由SOAP在WebService中填充的对象,如:

@WebMethod(operationName = "DogUpdate")
    public @WebResult(name = "resultId")
    Long dogUpdate(
    @WebParam(name = "DogDto", header = true, mode = Mode.IN) DogDto dog);
所以现在我需要使用Hibernate 5.0.2更新DB

DogDto类是这样的:

Entity
@Table(name="Dog", indexes={}, uniqueConstraints={})
class Dog implements Dog_i
{

  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="DOG_SEQ")
  @SequenceGenerator(name="DOG_SEQ", sequenceName="DOG_SEQ", allocationSize=1)
  @Id
  @Column(name="ID", unique=true, nullable=false)
  private Long id;

  @Column(name="Name", length=30)
  private String name;

  @Column(name="BirthDate")
  private Date birthDate;

  @Column(name="NumberDogSons")
  private Long numberDogSons;

@Column(name="namesDogSons")
  private List<String> namesDogSons;
}
实体
@表(name=“Dog”,索引={},唯一约束={})
类Dog实现Dog_i
{
@GeneratedValue(策略=GenerationType.SEQUENCE,generator=“DOG_SEQ”)
@SequenceGenerator(name=“DOG_SEQ”,sequenceName=“DOG_SEQ”,allocationSize=1)
@身份证
@列(name=“ID”,unique=true,nullable=false)
私人长id;
@列(name=“name”,长度=30)
私有字符串名称;
@列(name=“生日”)
私人生日;
@列(name=“NumberDogSons”)
私人长号;
@列(name=“namesDogSons”)
私人名单;
}
所以我的问题是我不知道我在我的网络服务中收到的狗的价值是什么,所以我不知道我需要改变什么

我看到反射有帮助,但我有一个复杂的对象,如(对象狗中的列表,如“所有者”等)

我能做什么用未丢失的信息更新对象?因为如果一个字段为null(当它是一个长的、整数、int…),它会显示为0和其他相关的问题

你有什么建议吗

谢谢大家:)

所以我的问题是我不知道我在我的网络服务中收到的狗的价值是什么,所以我不知道我需要改变什么

从上面的代码中,您似乎得到了一个“DogDto dog”

您只需使用saveOrUpdate方法使hibernate持久化这个dog对象


如果您的ID定义良好,Hibernate将更新现有ID(如果存在),否则将插入新ID。

谢谢您的帮助!但这里的事情是:假设我有一个对象,比如{ID:1,名字:'Jack',生日:'22/12/2015',名字是:'Peyroteo',Travassos',Damas',},我收到一个Dto,像这样:1 Sparrow,com:birthDate和名字是用null更新的。。。这就是我的问题……如果你想在更新/删除期间更新或不更新狗的子项,你可以用CASCADE关键字指定它。