繁体   English   中英

在Restful-WebService响应中包括所有@OneToMany实体吗?

[英]Including all @OneToMany Entities in Restful-WebService response?

首先在这里发布,所以请原谅任何愚蠢的做法,以最好地引起您的注意/帮助我找到答案。 :)

无需过多介绍我的实际程序:

我有一个可以注册许多设备用户 ,这些设备可以与许多可以具有许多按钮的 远程控制器相关联(命令(准确地说是LIRC命令))。

这是我对4个实体的@ManyToOne@OneToMany部分的代码。

USERS

@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;

COMMANDS

@ManyToOne
@JoinColumn(name = "REMOTE_ID")
private Remotes remote;

它们都可以正常工作,并且数据库条目都具有适当的外键,如果我正确理解的话,这应该是双向的。

对我的问题:

有没有办法我RESTful Web服务请求能到的findAll()上的用户,不仅与用户响应,但也与所有从设备依次将数据返回响应所有设备远程的和属于远程命令

@GET
@Override
@Produces({"application/json"})
public List<Users> findAll() {
    return super.findAll();
}

如果需要的话,我将不得不遍历所有实体并亲自将JSON修补在一起,但是在我踏上这一旅程之前,我想知道是否有更简单的方法来解决我的问题。

干杯

快速解决:

我必须更改实体中所有@OneToMany和@ManyToOnes的获取和级联设置。

@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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM