web-dev-qa-db-fra.com

Lombok excluant le champ avec @ ToString.Exclude ne fonctionne pas

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.

enter image description here

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.

0
Robert Mikes