我有一个实体,其中一个字段具有一对多关系。
看起来像这样。
@Entity
@Table(name = "company")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class Company implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column(name = "name", nullable = false)
private String name;
@NotNull
@Column(name = "short_name", nullable = false)
private String shortName;
@NotNull
@Column(name = "customer_number", nullable = false)
private String customerNumber;
@OneToMany(mappedBy = “company”)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<BusinessType> businessTypes = new HashSet<>();
… getters setters
}
@Entity
@Table(name = “business_type")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class BusinessType implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Enumerated(EnumType.STRING)
@Column(name = "type", nullable = false)
private BType type;
@ManyToOne(optional = false)
@NotNull
@JsonIgnore
private Company company;
… getters setters
}
public enum BType {
TYPE1, TYPE2, TYPE3
}
数据库表如下:
公司(编号,名称,简称,客户编号)
business_type(ID,类型,company_id)
当我请求特定的REST路径时,我得到以下JSON结构:
{
"id" : 1,
"name" : “Business name”,
"shortName" : "Business short name",
"customerNumber" : "1234",
“businessTypes" : null
}
但是我期望以下内容:
{
"id" : 1,
"name" : “Business name”,
"shortName" : "Business short name",
"customerNumber" : "1234",
"businessTypes" : [{
"id" : 1,
“type” : “TYPE1”
}]
}
当值在数据库中时为什么businessTypes
null
?
我想念什么?
答案 0 :(得分:0)
尝试在@JoinColumn(name="company_id")
之后添加@ManyToOne
答案 1 :(得分:0)
@OneToMany(mappedBy = "company", fetch = FetchType.EAGER)
默认为LAZY,除非明确请求,否则不加载关系实体