2016-08-09 3 views
0

REST Webservicesの新機能です。現在、Spring JPAをサービスの開発に使用しています。私はRESTレスポンスの選択列を返すのが難しいです。私の問題は以下の通りです:REST JSONレスポンスの列数を少なくする

私は列

  1. 同上
  2. 名前
  3. 年齢
  4. 携帯電話番号
以下と10行のユーザーテーブルを持っています

My User Entityオブジェクトは

です。
@Entity 
@Table(name="user") 
public class User 
{ 

@Id 
@GeneratedValue(generator="ID", strategy=GenerationType.SEQUENCE) 
private long id; 

@Column(name="Name") 
private string name; 

@Column(name="age") 
private int age; 

@Column(name="city") 
private string city; 

@Column(name="mobile number") 
private string mobileNumber; 
. 
. 
. 
getter and setters 
. 
. 
.} 

私が開発するために、2つの要件の下にあります。

  1. が唯一の3つの列(ID、名前と携帯電話番号)
  2. ですべての行を返すために、すべての列とすべての行を返すには最初の要件の

は、私はそれが第二requirためのfindAll()JPA

を使用して、作業取得することができましたこれにより

@Query("select New com.org.user(u.id, u.name, u.mobileNumber) from user u") 
public List<user> getList() 

は、私のJSONレスポンスは、他の2つの分野(都市及び年齢)を有する既定値ではなく、テーブル内の実際の値を以下のように見ていた:ement、私は以下のようにカスタムクエリを使用してみました。

[ 
{ 
"id": 1, 
"name":"Rocky" 
"age":0, 
"city":null, 
"mobileNumber": "9080980909" 
}, 
{ 
"id": 2, 
"name":"Stella" 
"age":0, 
"city":null, 
"mobileNumber": "8909012239" 
} 
. 
. 
. 
. 
{ 
"id": 10, 
"name":"Una" 
"age":0, 
"city":null, 
"mobileNumber": "78976887989" 
} 
] 

誰かが、私は上記のような応答を得ることができる方法のよう助けてくださいことはできますか?私は三つのフィールド

[ 
{ 
"id": 1, 
"name":"Rocky", 
"mobileNumber": "9080980909" 
}, 
{ 
"id": 2, 
"name":"Stella", 
"mobileNumber": "8909012239" 
}, 
. 
. 
. 
{ 
"id": 10, 
"name":"Una", 
"mobileNumber": "78976887989" 
} 
] 

を含めるには、以下のようになり、応答を必要としますか

+0

JsonView:https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring –

+0

こんにちはアラン、これを行う代わりに作成する他の方法があります必要なすべてのカスタムレスポンスのPOJO – Harish

+0

はい、JsonViewをアドバイスとして使用するか、シリアライザでnullを無視するように設定してください。ジャクソンの場合:http://stackoverflow.com/questions/11757487/how-to-tell-jackson-to-ignore-a-field-during-serialization-if-its-value-is-nullブール値、整数などのnull値を持たないプリミティブの場合は、Pojoにnull値のラッパー・タイプBoolean、Integerなどを使用します。 –

答えて

0

エンティティに@JsonInclude(Include.NON_NULL)注釈を使用します。あなたのjsonレスポンスのすべてのnullフィールドを除外します。しかし、その後、 "age"をintからIntegerデータ型に変更する必要があります。

@Entity 
@Table(name="user") 
@JsonInclude(Include.NON_NULL) 
public class User 
{ 

@Id 
@GeneratedValue(generator="ID", strategy=GenerationType.SEQUENCE) 
private long id; 

@Column(name="Name") 
private String name; 

@Column(name="age") 
private Integer age; 

@Column(name="city") 
private String city; 

@Column(name="mobile number") 
private String mobileNumber; 
. 
. 
. 
getter and setters 
. 
. 
.} 
+0

ブール値のフィールドがある場合、@JsonInclude(Include.NON_NULL)は機能しますか? – Harish

+0

データ型をブール値に変更し、プリミティブデータ型を使用可能にしたい場合は使用しないでください。 – Leo

関連する問題