J'utilise Lombok pour supprimer le code passe-partout. J'essaie d'imprimer une entité sur la console mais j'obtiens une StackOverflowError. L'entité a une relation bidirectionnelle avec une autre entité, je souhaite donc exclure cette entité de la méthode toString.
Mon entité ressemble à ceci:
@Entity
@Data
public class Foo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long fooId;
private String name;
@ManyToOne
@JoinColumn(name = "barId")
@EqualsAndHashCode.Exclude
@ToString.Exclude
private Bar bar;
}
C'est la première fois que j'essaie d'utiliser @ToString.Exclude
et il ne semble pas se comporter. Est-ce que je l'utilise mal? Je veux juste afficher fooId
et name
lorsque j'appelle toString sur l'objet Foo.
Modifier
Je connais d'autres approches pour exclure ou inclure des champs d'un niveau supérieur @ToString
annotation. J'essaie d'éviter cela. Je veux juste utiliser @Data
au niveau de la classe et annoter les champs à exclure.
Édition 2
Répliquant toujours sur une classe simplifiée. Lombok version 1.18.8.
Vous devrez mettre à jour le lombok installé dans votre Eclipse (téléchargez le nouveau lombok.jar, exécutez Java -jar lombok.jar
et redémarrez Eclipse). Au moins, cela l'a résolu pour moi.