2016-11-10 25 views
-1

我設置一個休息Web服務與不同的資源。休息--JSON響應有一個未知的字段

其中之一是可以通過/ API訪問的客戶/顧客

客戶類有一個ID,地址,姓名和電子郵件領域,但由於某些原因,JSON響應看起來是這樣的:

{ 
"type": "customer", 
"address": { 
    "city": "Kottes-Purk", 
    "country": "Pakistan", 
    "street": "Julius-Raab-Straße 008" 
}, 
"email": "[email protected]", 
"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(); 
} 
} 
+0

您是否已輸入'Model'類? – iNan

+0

@iNan no。模型類只有兩個公共方法 – Lamevire

+0

您可以記錄'Customer'的一個實例並檢查ID是否已設置。 – iNan

回答

1

標識缺少的,因爲你的ID二傳手是錯誤的,應該是

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

類型 ' 「類型」: 「客戶」,' 可能增加來自Model類的JSON。請檢查模型類別

+0

你是對的ID問題。謝謝。我在第一篇文章中添加了模型類。我沒有看到任何可疑的東西。 – Lamevire