2016-11-10 8 views
-1

私は別のリソースで残りのウェブサービスをセットアップしました。それらのrest - 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」フィールドがある理由がわかりません。誰かがなぜそこにいるのか説明できますか? CustomerResourceクラスで

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

} 

顧客のクラスは次のようになります

@GET 
@Produces(MediaType.APPLICATION_JSON) 
public List<Customer> getCustomers(){ 
    return agencyManager.getCustomers(); 
} 

私はここで何をしないのですか? ': "顧客"、 "タイプ"' に追加される場合がありますので、あなたのIDセッターの

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。モデルクラスには2つのパブリックメソッドしかありません – Lamevire

+0

'Customer'の1つのインスタンスをログに記録し、IDが設定されているかどうかを確認できます。 – iNan

答えて

1

同上欠落が間違っている、それは

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

タイプでなければなりません:あなたは

Modelクラスが感謝ModelクラスのJSON Modelクラスを確認してください

+0

あなたはid問題について正しいです。ありがとうございました。最初の投稿にモデルクラスを追加しました。私は何事も懸念していない。 – Lamevire

関連する問題