【问题标题】:Including all @OneToMany Entities in Restful-WebService response?在 Restful-WebService 响应中包括所有 @OneToMany 实体?
【发布时间】:2015-06-04 18:25:30
【问题描述】:

第一次在这里发帖,所以请原谅任何愚蠢的方法以最好地引起您的注意/帮助我找到答案。 :)

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

我有一个用户,他可以注册许多设备,这些设备可以关联到许多遥控器,这些遥控器可以有许多按钮(命令(准确地说是 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 Web 服务请求是否可以通过响应 User 以及来自 Devices 的所有数据来响应用户上的 findAll()依次返回所有 Devices'Remote's 和属于 RemoteCommands

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

如果需要,我必须自己检查所有实体并拼凑一个 JSON,但在开始这段旅程之前,我想知道是否有更简单的方法来解决我的问题。

干杯

【问题讨论】:

    标签: java web-services rest jpa bidirectional-relation


    【解决方案1】:

    快速修复:

    我必须更改我的实体中所有@OneToMany 和@ManyToOnes 的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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      • 2011-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 2019-02-07
      • 1970-01-01
      相关资源
      最近更新 更多