【问题标题】:rest - json response has an unknown fieldrest - json 响应有一个未知字段
【发布时间】:2016-11-10 01:24:38
【问题描述】:

我用不同的资源设置了一个休息网络服务。

其中一个是可以通过 /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 响应中有一个“类型”字段。有人可以解释它为什么在那里吗?

客户类如下所示:

@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();
}
}

【问题讨论】:

  • 你有输入Model类吗?
  • @iNan 没有。模型类只有两个公共方法
  • 您可以记录Customer的一个实例并检查ID是否已设置。

标签: java json hibernate rest


【解决方案1】:

id 丢失是因为你的 id 设置器是错误的,应该是

public void setId(int id) {
  this.id = id;
}

类型 '"type": "customer",' 可能会从 Model 类添加到 JSON。检查模型类

【讨论】:

  • 您对身份问题的看法是正确的。谢谢你。我在第一篇文章中添加了模型类。我没有看到任何可疑之处。
猜你喜欢
  • 1970-01-01
  • 2020-12-24
  • 2018-11-30
  • 1970-01-01
  • 2017-06-20
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多