Записи отношений ManyToMany не отображаются в Spring REST - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть два класса: MenuItem.java и Tag.java.Я использую реализацию JPA Hibernate и использую PagingAndSortingRepository.После создания нескольких фиктивных элементов MenuItem и тегов они отображаются в моей локальной базе данных и могут быть доступны с помощью: localhost: 8080 / api / menuItems или localhost: 8080 / api / tags.Кроме того, как описано в моих комментариях к файлам ниже, между этими двумя объектами существует отношение ManyToMany, и в моей базе данных также создается таблица Menu_Items_Tags с соответствующими записями.

ПроблемаЯ сталкиваюсь с тем, что каждый раз, когда я пытаюсь получить доступ к списку тегов данного элемента меню, например, через: localhost: 8080 / api / menuItems / 1 /, я получаю 500 error и дополнительно получаю повторяющийся код ошибки, подобный этому:

: HHH000100: Fail-safe cleanup (collections) : org.hibernate.engine.loading.internal.CollectionLoadContext@726b0462<rs=HikariProxyResultSet@1877641821 wrapping Result set representing update count of 6>

Есть ли что-то, что я делаю неправильно, пытаясь запросить теги элемента MenuItem или неправильно настраиваю свои отношения @ManyToMany?

MenuItem.java:

@Data
@Entity
public class MenuItem implements Serializable {

private static final long serialVersionUID = 1132661429342356177L;

public MenuItem() {
}

public MenuItem(String name, Double price, Integer inventory, String description, Set<Tag> tags) {
    this.name = name;
    this.price = price;
    this.inventory = inventory;
    this.description = description;
    this.tags = tags;
}

@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;

@Column(name = "name", nullable = false, unique = true)
private String name;

@Column(name = "price", nullable = false)
private Double price;

@Column(name = "inventory", nullable = false)
private Integer inventory;

@Column(name = "description", nullable = false)
private String description;

@OneToMany(mappedBy = "menuItem")
private Set<Order> orders;

@ManyToMany
@JoinTable(
        name="menu_item_tags",
        joinColumns = @JoinColumn(name = "menu_item_id", referencedColumnName = "id"),
        inverseJoinColumns = @JoinColumn(name = "tag_id", referencedColumnName = "id"))
@JsonManagedReference
private Set<Tag> tags;

}

Tag.java:

@Data
@Entity
public class Tag implements Serializable {

private static final long serialVersionUID = 1132661429342356176L;

public Tag() {
}

public Tag(String name) {
    this.name = name;
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@Column(name = "name", unique = true)
private String name;

//    @JsonIgnore
@ManyToMany(mappedBy = "tags")
@JsonBackReference
private Set<MenuItem> menuItems;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...