Je travaille sur un projet JAVA basé sur REST utilisant Spring framework. Certaines de mes entités JPA ont l'annotation @JsonIgnore
de jackson pour les propriétés. Exemple ci-dessousComment utiliser @JsonIgnore à appliquer uniquement lorsque l'objet n'est pas l'objet racine?
@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
}
Selon la relation de classe ci-dessus, je veux le @JsonIgnore
à appliquer que lorsque je vais chercher Transactions
.
List<Transactions> transactions = transactionsRepo.findAll()
Mais si je suis directement les TransactionDetails aller chercher, je dois la propriété transaction
dans TransactionDetail
à extraire aussi bien.
List<TransactionDetail> details = transactionDetailsRepo.findByAccountNo(accountNo);
Comment puis-je utiliser le @JsonIgnore
pour cela? Ou bien y a-t-il un autre moyen approprié pour y parvenir?
laissez-moi savoir si c'est ce que votre exigence est? –
La raison pour laquelle j'ai mis '@ JsonIgnore' est qu'il crée une boucle lorsque je charge les Transactions et que je les convertis en JSON. Mais, quand je charge les TransactionDetails, j'ai besoin que ce champ soit présent dans JSON. J'espère que votre réponse pourrait aider. Je vais le tester et mettre à jour. – BlueBird
Oui, cela fonctionnerait laissez-moi savoir une fois que vous le tester –