Я использую 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.
Любая обратная связь очень ценится.