Ошибка потока Stakover с Джексоном, примененным к объектам JPA для создания JSON

У меня есть JPA код с OneToMany отношения. Customer имеет список Item проверить. Тем не менее, код продолжают генерировать StackruError,

Однажды я решил эту проблему, применив @JsonIgnore при получении List<Item> от юридического лица Но даже это, похоже, больше не работает.

В Customer класс:

@OneToMany(mappedBy = "customer", orphanRemoval = true)
@JsonIgnore
private List<Item> items;

В Item класс:

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "CUSTOMER_ID", nullable = false)
private Customer customer;

А также CustomerRest класс:

@Path("customers")
public class CustomerRest {

    @Inject
    NewSessionBean newSessionBean;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Customer> getAllCustomers() {
        return newSessionBean.getCustomers();
    }
}

метод newSessionBean.getCustomers():

public List<Customer> getCustomers(){
    TypedQuery<Customer> q= em.createQuery("select c from Customer c", Customer.class);

    return q.getResultList();
}

Я ожидаю, что сообщение JSON будет отформатировано, но никаких признаков этого нет. Все, что я получаю, это java.lang.StackruError в браузере и журнале сервера генерирует следующее:

Generating incomplete JSON|#]
    java.lang.StackruError
    java.lang.StackruError    at org.eclipse.yasson.internal.serializer.DefaultSerializers.findByCondition(DefaultSerializers.java:130)

1 ответ

Решение

Похоже, вы используете проект Яссона, а не Джексона. В этом случае вы должны использовать @JsonbTransient аннотаций. Смотрите документацию:

По умолчанию, JSONB игнорирует свойства с закрытым доступом. Все общедоступные свойства - либо общедоступные, либо непубличные поля с общедоступными получателями сериализуются в JSON текст.

Исключение свойств может быть сделано с @JsonbTransient аннотаций. Свойства класса с пометкой @JsonbTransient аннотации игнорируются JSON Binding двигатель. Поведение отличается в зависимости от того, где @JsonbTransient аннотация размещена.

Смотрите также:

Другие вопросы по тегам