1

こんにちは、私は実際に Spring-boot、hibernate、psql を使用して REST サーバーに取り組んでおり、エンティティ間に OneToOne 関係を追加した後、いくつかの問題が発生しています。

2 つのエンティティは次のとおりです。

支払う:

@Entity
@Table(name = "pays")
public class Pays implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@JsonProperty("codePays")
private String codePays;

@Column(name = "libelle_pays")
@JsonProperty("libellePays")
private String libellePays;

@OneToOne(mappedBy = "pays",cascade = CascadeType.ALL, fetch = FetchType.LAZY, optional=false)
private Traduction traduction;

protected Pays() {
}

public Pays(String codePays,String libellePays) {
    this.codePays = codePays;
    this.libellePays = libellePays;
}

と翻訳:

@Entity
@Table(name = "traduction")
public class Traduction implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@JsonProperty("codeTrad")
private long codeTrad;

@Column(name = "defaultLanguage")
@JsonProperty("defaultLanguage")
private boolean defaultLanguage;

@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@JoinColumn(name="fk_code_pays")
@JsonProperty("codePays")
private Pays pays;

public Traduction(){
}

public Traduction(String codePays,boolean defaultLanguage) {
    this.defaultLanguage = defaultLanguage;
    pays.setCodePays(codePays);
}

Post メソッドを使用してテーブルの変換を入力しようとすると、問題が発生します。

@PostMapping("/traduction")
public Traduction createTraduction(@RequestBody Traduction trad) {
    System.err.println(trad);
    return repository.save(trad);
}

次のように PostMan 経由で JSON データをサーバーに送信すると:

{ "codeTrad":0, "defaultLanguage":true, "fk_code_pays":"FR" }

またはこの方法:

{ "codeTrad":0, "defaultLanguage":true, "pays": { "codePays":"FR", "libellePays":"フランス" } }

私のサーバーはオブジェクト Pays とのマッピングを理解していないようです。リクエスト後のオブジェクト Traduction の外観: [codeTrad=0, null, defaultLanguage=true]

そしてきれいなエラー:

[org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: (was java.lang.NullPointerException); を解決しました。入れ子になった例外は com.fasterxml.jackson.databind.JsonMappingException: (以前は java.lang.NullPointerException でした) (参照チェーン経由: com.auchan.corp.ipon.iponportail.model.Traduction["codePays"])]

そのため、問題がサーバーの概念に起因するのか、JSON に起因するのか疑問に思っています。アイデアはありますか?

4

2 に答える 2