【发布时间】:2017-05-22 06:53:40
【问题描述】:
我使用 Spring Boot+JPA 设计了一个 REST Web 服务。我有两个实体类 - 事件、地址、事件成员。它们的定义如下。
@Entity
@Table(name="event")
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name="name")
private String name;
@Column(name="description")
private String description;
@JsonFormat(pattern="yyyy-MM-dd")
private Timestamp event_date;
private boolean is_deleted;
@ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.ALL)
@JoinColumn(name="address")
@JsonBackReference
@JsonInclude
private Address address;
@OneToMany(mappedBy="event")
private Set<EventMember> eventMember;
地址:
@Entity
@Table(name="address")
public class Address {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String short_code;
private String address1;
private String address2;
private String landmark;
private String zipcode;
private boolean is_deleted;
@OneToMany(mappedBy="address",cascade = CascadeType.ALL)
private Set<Event> event;
当我在 JSON 响应中使用事件 ID(主键)获取事件时,我在 EventMember 实体中获取了相应的成员,但未获取地址记录。
谁能告诉我如何在获取事件成员的同时获取地址实体。
按 ID 获取地址的代码
public Address getAddressById(Long id) {
return em.find(Address.class, id);
}
【问题讨论】:
-
这里有不同的步骤......通过 JPA 检索数据......并通过 JSON 序列化。在检索中定义问题出在哪里?还是在序列化中?
标签: java mysql jpa spring-boot