hibernate Java一对多持久化哈希集
有人能告诉我,当我从邮递员那里发出请求时,我的reportFilter变空了“名称”字段设置正确,但报告筛选器为空。我遗漏了关于OneToMany的任何注释?我正在调用/api/save,它接受ReportTemplate对象,但我没有在该对象中获得reportFilter列表
@Entity
@Audited
@XmlRootElement
@Table(uniqueConstraints = @UniqueConstraint(columnNames = "name"))
@JsonIgnoreProperties(value = { "handler", "hibernateLazyInitializer" })
public class ReportTemplate {
private String name;
private String templateFormat;
private Set<ReportFilter> reportFilter = new HashSet<>();
@NotNull
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(mappedBy="reportTemplate")
@JsonIgnore
public Set<ReportFilter> getReportFilter() {
return reportFilter;
}
public void setReportFilter(Set<ReportFilter> reportFilter) {
this.reportFilter = reportFilter;
}
}
@Entity
@Audited
@XmlRootElement
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"column_1", "reportTemplate_id"}))
@JsonIgnoreProperties(value = { "handler", "hibernateLazyInitializer" })
public class ReportFilter {
private String column_1;
private ReportTemplate reportTemplate;
@NotNull
public String getColumn_1() {
return column_1;
}
public void setColumn_1(String column_1) {
this.column_1 = column_1;
}
@ManyToOne
@NotNull
public ReportTemplate getReportTemplate() {
return reportTemplate;
}
public void setReportTemplate(ReportTemplate reportTemplate) {
this.reportTemplate = reportTemplate;
}
}
邮递员要求:
{
"name": "Test-Report",
"reportFilter": [
{
"filterColumn": "Reference Number",
"column_1": "A",
"columnValue": "HE222",
},
{
"filterColumn": "Test Column",
"column_1": "B",
"columnValue": "1234",
}
]
}
# 1 楼答案
通过从以下代码段中删除
@JsonIgone
可以解决您的问题:通过这个注释,您可以对
JsonEncoderDecoder
说,当从json对象转换到hibernate实体时,忽略这个属性你也错过了两个实体之间关系的一面。使用这样的东西:
您需要这个来定义所有者实体
而且大多数实体都有一个
@Id
列作为主键