[英]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.