外键关系停止使用RESTful Web服务吗? (Java / REST)

时间:2019-03-17 04:08:18

标签: java rest netbeans jersey glassfish

我正在NetBeans中使用Java创建一些RESTful Web服务。

当我创建具有外键约束的表时,无法对所有资源发出GET / POST请求,只能发出一个请求(500 Internal Server Error)。尽管“计数”确实有效。

当我创建没有外键约束的表时,我可以毫无问题地访问资源。这使我相信自动生成的定义外键关系的Java代码有问题。

我可以访问一个表,与其他表相比,该表唯一不同的是它没有外键。我无法访问的所有表都引用了“ USERS”表,“ USERS”也没有外键,但是我仍然也无法通过REST访问“ USERS”。

如果我在数据库中输入未在其他任何表中引用其User_ID的用户,则可以通过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;

我真的看不到这里出了什么问题,但是通过一些测试,我相信问题与Java中FK关系的表达方式有关。

任何反馈都非常感谢。

0 个答案:

没有答案
相关问题