4

プロジェクトは springmvc を使用して安らかなサービスを構築しており、JPA はデータを DB に永続化します。

私は最近、Web インターフェイスを介して 1 つのオブジェクトを更新する作業を行っています。jackson を使用して、ポスト json データをオブジェクト クラスに逆シリアル化します。ただし、オブジェクトをデータベースにマージするのに問題があります。jackson から逆シリアル化されたオブジェクト クラスが管理されていないことを知っていました。それが、マージが何も起こらない理由です。これがサンプルコードです。

実在物:

@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;
}

Junit の管理対象オブジェクトでこのメソッドをテストしましたが、すべてうまくいきました。したがって、すべてのエンティティ マージ コードは通常の状況で見つかると思います。誰が問題が何であるか教えてもらえますか? ありがとう

4

0 に答える 0