如何在持久化之前加载缺少的对象属性?

时间:2015-06-18 17:08:41

标签: java json spring hibernate jackson

我对Jackson和Hibernate有疑问。我的应用程序基于休息,对象作为json在前端和后端之间传输,所以当我将json反序列化为java对象并且我想加载这些属性时,我遇到了某些对象的属性丢失的情况在持续更改之前(因为我不想丢失数据库中的数据)。有没有人想解决这个问题?

修改

我不确定我的问题是否理解正确。所以我举一个简单的例子,我试着说。

所以我有以下Java类:

@Entity
@Table( name = "employees" )
public class Employee extends BaseEntity<Long> {

  private String lastName;
  private String firstName;

  @Embedded 
  private Address address;

  //... a lot of other attributes and methods.. 

}

现在我从前端获取json数据,这是这样的:

{
 "id":17,
 "lastName":"Smith",
 "firtName":"John"
}

接下来我想将这些更改保存到数据库,但我的反序列化java实体完全不完整,有很多缺少的属性和引用(值为空)。如何在持久化对象之前加载那些缺少的属性值,而不会丢失我从UI获得的那些新值?

我尝试使用EntityManager的合并方法,但它没有工作......

2 个答案:

答案 0 :(得分:0)

从数据库加载数据(如果记录已存在),请执行合并&amp;保存。

答案 1 :(得分:0)

您可以将多个DTO作为JPA @Entities映射到同一个数据库表。当您保存一个这样的DTO时,只有它的字段传播到数据库,而不会干扰当前DTO未映射的其他数据库列。