Отношения с внешним ключом останавливают потребление веб-сервисов RESTful?(Java / REST) - PullRequest
0 голосов
/ 17 марта 2019

Я использую Java в NetBeans для создания некоторых веб-сервисов RESTful.

Когда я создаю таблицы с ограничениями внешнего ключа, я не могу делать запросы GET / POST ко всем ресурсам, кроме одного (500 Internal Server Error). Хотя «граф» работает.

Когда я создаю таблицы без ограничений внешнего ключа, я могу получить доступ к ресурсам без проблем. Это наводит меня на мысль, что что-то не так с автоматически сгенерированным кодом Java, который определяет отношения с внешним ключом.

Есть одна таблица, к которой я могу получить доступ, единственное отличие этой таблицы по сравнению с другими в том, что она не имеет внешнего ключа. Все таблицы, к которым у меня нет доступа, ссылаются на таблицу «ПОЛЬЗОВАТЕЛИ», «ПОЛЬЗОВАТЕЛИ» также не имеют внешнего ключа, однако я все еще не могу получить доступ к «ПОЛЬЗОВАТЕЛЯМ» через REST.

Если я ввожу пользователя в базу данных, идентификатор пользователя которой не указан ни в одной из других таблиц, я могу получить данные этого пользователя через REST.

Вот код от сущности Users для отображения отношений:

@OneToOne(cascade = CascadeType.ALL, mappedBy = "users")
private Credential credential;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "userId")
private Collection<Report> reportCollection;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "userId")
private Collection<Consumption> consumptionCollection;

А затем, например, вот соответствующий код в сущности потребления:

@JoinColumn(name = "FOOD_ID", referencedColumnName = "FOOD_ID")
@ManyToOne(optional = false)
private Food foodId;
@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")
@ManyToOne(optional = false)
private Users userId;

Учетные данные:

@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID", insertable = false, updatable = false)
@OneToOne(optional = false)
private Users users;

Пищевая сущность:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "foodId")
private Collection<Consumption> consumptionCollection;

Отчетный объект:

@JoinColumn(name = "USER_ID", referencedColumnName = "USER_ID")
@ManyToOne(optional = false)
private Users userId;

Я действительно не вижу, что здесь происходит не так, но после некоторого тестирования я считаю, что проблема заключается в том, как отношения FK выражаются в Java.

Любая обратная связь очень ценится.

...