合并Hibernate对象的问题

时间:2015-12-22 15:48:26

标签: java hibernate web-services soap

我是关于在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更新数据库。

班级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;
}

所以我的问题是我不知道我在WebService中收到的DogDto的值是什么,所以我不知道我需要改变什么。

我看到反射可以有所帮助,但我有一个复杂的对象(在对象狗里面列出,像'所有者'和其他人更多)

我可以做什么用信息没有丢失来更新对象?因为如果一个字段为null(当时是Long,Integer,int ......),它会显示为0和其他相关问题。

你有什么建议吗?

非常感谢大家:)

1 个答案:

答案 0 :(得分:0)

  

所以我的问题是我不知道我在WebService中收到的DogDto的值是什么,所以我不知道我需要改变什么。

从你上面的代码中,你似乎得到了一只狗狗#34;

你只需要使用saveOrUpdate方法使hibernate持久保存这个dog对象。

如果您的ID定义明确,Hibernate会更新现有的ID,否则会插入一个新的。