我用不同的资源设置了一个rest webservice。
其中一个是客户,可以通过/api/customers
访问客户类有id、地址、姓名和电子邮件字段,但由于某种原因json响应看起来像这样:
{
"type": "customer",
"address": {
"city": "Kottes-Purk",
"country": "Pakistan",
"street": "Julius-Raab-Straße 008"
},
"email": "hana.lammert@hotmail.com",
"name": "Prof. Dr. David Mikitenko"
}
我不知道为什么json响应中有一个"type"字段。有人能解释一下为什么会在那里吗?
客户类如下所示:
@XmlRootElement
@Entity
@Table(name = "customers")
public class Customer extends Model {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
@JoinColumn(name = "address_id")
private Address address;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "customer")
private List<Booking> bookings;
public Customer() {}
public Customer(String email, Address address, String name) {
this.email = email;
this.address = address;
this.name = name;
}
public int setId() {
return id;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
@XmlTransient
public List<Booking> getBookings() {
return bookings;
}
public void setBookings(List<Booking> bookings) {
this.bookings = bookings;
}
public static List<Customer> all() {
return (List<Customer>) Database.all(Customer.class);
}
public static Customer find(int id) {
return (Customer) Database.find(Customer.class, id);
}
public static boolean exists(int id) {
return Database.exists(Customer.class, id);
}
public static List<Customer> where(String column, String value) {
return (List<Customer>) Database.where(Customer.class, column, value);
}
}
CustomerResource类中:
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Customer> getCustomers(){
return agencyManager.getCustomers();
}
我在这里错过了什么?谢谢你
模型类:
public abstract class Model implements Serializable {
public void save() {
EntityManager entityManager = HibernateUtil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
entityManager.persist(this);
entityManager.getTransaction().commit();
entityManager.close();
}
public void delete() {
EntityManager entityManager = HibernateUtil.getEntityManagerFactory().createEntityManager();
entityManager.getTransaction().begin();
entityManager.remove(entityManager.contains(this) ? this : entityManager.merge(this));
entityManager.getTransaction().commit();
entityManager.close();
}
}
Id缺失,因为你的Id设置错误,它应该是
public void setId(int id) {
this.id = id;
}
类型'"type": "customer",'可能会从Model类添加到JSON中。查看Model类