4

该项目正在使用 springmvc 构建 restful 服务,并且 JPA 将数据持久化到 DB 中。

我最近正在通过 Web 界面更新一个对象,我使用 jackson 将 post json 数据反序列化到对象类中。但是,我无法将对象合并回数据库。我有点知道从杰克逊反序列化的对象类是非托管的,这就是我合并的原因是什么都没发生。这是示例代码。

实体:

@Entity
@Table(name="Parent")
public class Parent{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonView(JsView.Public.class)
@Column(name = "id")
private Long Id;

@NotNull
@JsonView(JsView.Public.class)
private String name;

@NotNull
@JsonView(JsView.Public.class)
private String description;

@NotNull
@ManyToOne(fetch= FetchType.LAZY, cascade = {CascadeType.REFRESH})
@JoinColumn(name="creator_id")
@JsonView(JsView.Internal.class)
private User creator;

@OneToMany(mappedBy="quest", cascade = {CascadeType.REFRESH}, orphanRemoval = true)
private List<Collaboration> collaborators = new ArrayList<Collaboration>();

}

宁静的控制器:

  @RequestMapping(value = "/parent/{id}/update", method = RequestMethod.PUT)
  public ResponseEntity<String> updateQuestAttribute(@RequestBody String    parentJson,@PathVariable("id") long parent_id) {
  ObjectMapper mapper = new ObjectMapper();
  Parent parent = null;
  Parent newParent = mapper.readValue(parentJson, Parent.class);
  updateParent = parentService.updateParent(questNew,parent_id);

服务层:

@PersistenceContext
private EntityManager entityMgr;
@Transactional
public Parent updateParent(Parent newp, long id){
    Parent old = findOne(id);
    Parent update = entityMgr.merge(newp);
    return  update;
}

我已经在 J​​unit 中用一些托管对象测试了这个方法,一切都很好。所以,我猜所有实体合并代码都是在正常情况下找到的。谁能告诉我问题是什么?谢谢

4

0 回答 0