第一个帖子在这里,所以请原谅任何noobish方法最好地引起你的注意/帮助我找到一个答案。:)
在不详细说明实际程序的情况下:
我有一个用户谁可以注册许多设备可以关联到许多远程可以有许多按钮(命令(LIRC命令精确))。
这是我的4个实体的代码@ManyToOne和@OneToMany部分。
用户@OneToMany(mappedBy = "user")
private List<Devices> devices;
设备@ManyToOne
@JoinColumn(name = "USER_ID")
private Users user;
@OneToMany(mappedBy = "device")
private List<Remotes> remotes;
遥控器
@ManyToOne
@JoinColumn(name = "DEVICE_ID")
private Devices device;
@OneToMany(mappedBy = "remote")
private List<Commands> commands;
命令@ManyToOne
@JoinColumn(name = "REMOTE_ID")
private Remotes remote;
它们都工作得很好,数据库条目都有适当的外键,如果我理解正确的话,这应该是双向的。
给我的问题:
是否有一种方式我的Restful Webservice请求可以响应findAll()上的用户不仅响应用户,而且还与所有的数据从设备依次返回所有的设备的远程的和命令属于远程。
@GET
@Override
@Produces({"application/json"})
public List<Users> findAll() {
return super.findAll();
}
如果需要的话,我将不得不遍历所有的实体并自己修补一个JSON,但在我开始这个旅程之前,我想知道是否有更简单的方法来解决我的问题。
欢呼
快速修复:
我必须在我的实体中更改所有的@OneToMany's和@ManyToOnes' s的Fetch和级联设置。
@XmlTransient
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinColumn(name = "USER_ID")
private Users user;
@OneToMany(
mappedBy = "device",
fetch = FetchType.EAGER,
cascade = {CascadeType.REMOVE, CascadeType.MERGE,CascadeType.PERSIST})
private List<Remotes> remotes;