私はSpringフレームワークを使ってRESTベースのJAVAプロジェクトに取り組んでいます。私のJPAエンティティの中にはプロパティのためのjacksonの@JsonIgnore
注釈があります。以下の例。上記のクラスの関係を1としてオブジェクトがルートオブジェクトでない場合にのみ@JsonIgnoreを適用する方法は?
@Entity
@Table(name="TRANSACTION")
public class Transaction {
@Id
@Column(name="SERIAL", length=16)
private String serial;
@Column(name="NARRATION", length=128)
private String narration;
@OneToMany(mappedBy="transaction", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<TransactionDetail> details;
// other fields goes here
}
@Entity
@Table(name="TRANSACTION_DETAIL")
public class TransactionDetail {
@Id
@Column(name="UUID", updatable=false)
private String uuid;
@JsonIgnore
@ManyToOne
@JoinColumn(name="FK_TRANSACTION")
private Transaction transaction;
@Column(name="ACCOUNT_NO")
private int accountNo;
// other fields goes here
}
、私はTransactions
をフェッチするとき@JsonIgnore
にのみ適用することにしたいです。
List<Transactions> transactions = transactionsRepo.findAll()
しかし、私は直接TransactionDetailsを取得していた場合、私は同様にフェッチされるTransactionDetail
でプロパティtransaction
を必要としています。
List<TransactionDetail> details = transactionDetailsRepo.findByAccountNo(accountNo);
どうすればいいですか?@JsonIgnore
これを行うにはどうすればよいですか?それとも、これを達成するための他の適切な方法がありますか?
これがあなたの要件であるかどうか教えてください。 –
'@ JsonIgnore'を置くのは、トランザクションをロードしてJSONに変換するときにループを作成するということです。しかし、TransactionDetailsをロードすると、このフィールドがJSONに存在する必要があります。あなたの返信が助けてくれることを願っています私はそれを試して更新します。 – BlueBird
はい、これを試してみるとうまくいくでしょう –