JavaEE实体与TOME服务器的JSON输出
我试图输出我的实体飞行,它与我的另一个实体飞机有一对一的关系。在我在飞行实体中添加airplaneDetail字段之前,结果是完美的,但之后我得到了空结果,Eclipse开始在gson中抛出异常 我的航班等级:JavaEE实体与TOME服务器的JSON输出,json,jakarta-ee,apache-tomee,Json,Jakarta Ee,Apache Tomee,我试图输出我的实体飞行,它与我的另一个实体飞机有一对一的关系。在我在飞行实体中添加airplaneDetail字段之前,结果是完美的,但之后我得到了空结果,Eclipse开始在gson中抛出异常 我的航班等级: @Entity @NamedQueries({ @NamedQuery(name = "Flight.getAll", query = "SELECT f FROM Flight f"), }) @NamedQuery(name = "Flight.getByDestination",
@Entity
@NamedQueries({ @NamedQuery(name = "Flight.getAll", query = "SELECT f FROM Flight f"), })
@NamedQuery(name = "Flight.getByDestination", query = "SELECT f FROM Flight f WHERE f.destinationFrom=:destinationFrom AND f.destinationTo=:destinationTo")
public class Flight implements Serializable {
@Transient
private static final long serialVersionUID = 1L;
public Flight() {
super();
}
public Flight(FlightDestination destinationFrom, FlightDestination destinationTo, Integer flightPrice, Date date,
Airplane airplaneDetail) {
super();
this.destinationFrom = destinationFrom;
this.destinationTo = destinationTo;
this.flightPrice = flightPrice;
this.date = date;
this.airplaneDetail = airplaneDetail;
}
public Flight(FlightDestination destinationFrom, FlightDestination destinationTo, Integer flightPrice, Date date) {
super();
this.destinationFrom = destinationFrom;
this.destinationTo = destinationTo;
this.flightPrice = flightPrice;
this.date = date;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Enumerated(EnumType.STRING)
private FlightDestination destinationFrom;
@Enumerated(EnumType.STRING)
private FlightDestination destinationTo;
private Integer flightPrice;
@Temporal(TemporalType.DATE)
private Date date;
@OneToOne(cascade = { CascadeType.PERSIST, CascadeType.REMOVE })
@JoinColumn(name = "airplane_fk")
private Airplane airplaneDetail;
@Override
public String toString() {
return "Flight [id=" + id + ", destinationFrom=" + destinationFrom + ", destinationTo=" + destinationTo
+ ", flightPrice=" + flightPrice + ", date=" + date + ", airplaneDetail=" + airplaneDetail + "]";
}}
飞机实体:
@Entity
public class Airplane implements Serializable {
private static final long serialVersionUID = 1L;
public Airplane() {
super();
}
public Airplane(String planeModel, Integer seatingCapacity) {
super();
this.planeModel = planeModel;
this.seatingCapacity = seatingCapacity;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String planeModel;
private Integer seatingCapacity;
@OneToOne(mappedBy = "airplaneDetail")
private Flight flight;
@Override
public String toString() {
return "Airplane [id=" + id + ", planeModel=" + planeModel + ", seatingCapacity=" + seatingCapacity
+ ", flight=" + flight + "]";
}}
我的网络服务:
@Path("/flights")
public class FlightsWebService {
@PersistenceContext(unitName = "airline")
private EntityManager em;
@EJB
private FlightService fs;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Flight> getFlights() {
List<Flight> fList = fs.getAllFlights();
return fList;
}}
所以这里有一个想法。。。您调试JPAAPI调用产生的内容,然后将其隔离到正在使用的JSON生成中。See可能重复,特别是@XmlTransient。
[{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":{"airplaneDetail":{"flight":