Я использую Hibernate для управления следующим соотношением:Hibernate ManyToOne Повторяя отношения
Dashboard.java:
@Entity
@Table(name = "dashboard")
public class Dashboard {
@Id
@Column(name = "dashboard_id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "type", nullable = false)
private String type;
@Column(name = "name", nullable = false)
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToOne
@JoinColumn(name = "user_id", updatable = false)
private User user;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "dashwidgets")
public List<Widget> widgets;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
и Widget.java
@Entity
@Table(name = "Widget")
public class Widget {
@Id
@Column(name = "widget_id", nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "widgetlayout_id")
private WidgetLayout layout;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "dashboard_id")
public Dashboard dashwidgets;
public WidgetLayout getLayout() {
return layout;
}
public void setLayout(WidgetLayout layout) {
this.layout = layout;
}
@Column(name = "widget_type", nullable = false)
private String widgetType;
public Widget() {
}
public Widget(long id, String widgetType) {
this.id = id;
this.widgetType = widgetType;
}
@Column(name = "resizeable")
public boolean resizable;
@Column(name = "canpopout")
public boolean canpopout;
@Column(name = "settings", columnDefinition = "CLOB NOT NULL")
public String settings;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getWidgetType() {
return widgetType;
}
public void setWidgetType(String widgetType) {
this.widgetType = widgetType;
}
}
Что я ожидал что панель инструментов может содержать список виджетов. Каждый виджет принадлежит одной приборной панели. Тем не менее, генерируемый POJO выглядит следующим образом:
{
"Id": 0,
"Type": "string",
"Name": "string",
"User": {
"Id": 0,
"Username": "string"
},
"Widgets": [
{
"Id": 0,
"Layout": {
"Id": 0,
"Col": 0,
"Row": 0,
"Sizex": 0,
"Sizey": 0
},
"Dashwidgets": {},
"WidgetType": "string",
"Resizable": false,
"Canpopout": false,
"Settings": "string"
}
]
}
По какой-то причине Это добавление «Виджеты»: как правильное POJO, а затем дополнительно «Dashwidgets»: {}.
Когда я сохраняю объект, сохраняется только объект DashWidgets.
Что я делаю неправильно?
Пробовал, что модель все еще выходит один и тот же: '{ "ID": 0, "типа": "строка", "имя": "строка", "пользователь": { " идентификатор ": 0, "имя пользователя": "строка" }, "виджетов": [ { "ID": 0, "раскладка": { "идентификатор": 0, "Col": 0 , "row": 0, "sizex": 0, "sizey": 0 }, "dashwidgets": {}, " widgetType ": "строка", "изменяемая": ложь, "canpopout": ложь, "Настройка": "строка" } ] }' – user171943
Перед сохранением объекта, установить родитель на ребенке, а также. 'widget.setDashWidget (dashboard)' для каждого дочернего элемента. Возможно, вам понадобится добавить метод setter в дочерний элемент. Кроме того, вы можете избавиться от этого родительского объекта от Child и позволить Hibernate создавать таблицу соединений самостоятельно из Parent. – techtabu