Husband.java春データJPA @OneToOne注釈無限再帰エラー
package com.example.demo.com.example.domain;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
//@Data
//@NoArgsConstructor
//@EqualsAndHashCode
//@ToString
@Entity
@Table(name = "t_husban")
public class Husband {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private String job;
@OneToOne
@JoinColumn(name = "wife_fk",referencedColumnName = "id")
private Wife wife;
//omitted getter/setter
}
Wife.java
package com.example.demo.com.example.domain;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.*;
//@Data
//@NoArgsConstructor
@EqualsAndHashCode(exclude = "husband",callSuper = false)
@Entity
@Table(name = "t_wife")
public class Wife {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
@OneToOne(mappedBy = "wife",cascade = {CascadeType.ALL})
private Husband husband;
//omitted getter/setter
}
Service.java
@Service
public class TestOneToOneEitherSide {
@Autowired
private WifeRepository wifeDao;
@Autowired
private HusbandRepository husbandDao;
public Husband testCreate() {
Husband husband = husbandDao.findByName("Wang");
return husband;
}
}
春データjpaを使用してデータベースから夫を照会すると、結果にnfinite再帰が発生し、次の画像が表示されます。@OneToOneアノテーションを使用している間に何か問題がありますか?または、私は間違った方法で注釈を使用します。
コントローラーで戻したいのですか? –
** JSON **の無限再帰を意味しますが、JPAでは意味しません。おそらく、あなたのJSONの使用に問題があります。それで、JPAが生成したものと何を伝えているのか見てみましょう。そうすれば、それを引き起こすステップを見ることができます。 –
** stackoverflowerror ** ** husband **をController.Soに返すときに発生します。 husbandDao.findByName( "Wang") – Holinc