0

私はRestWebサービスに取り組んでおり、モバイルアプリ用のJSONデータを生成しています。Tomcat7、Hibernate 3.3、MySQL5としてJersey 1.4、Webサーバーを使用しています。私はRESTの世界に不慣れです。クエリに基づいて年のリストを返すだけのエンドポイントがあります。

出力:

{"success":true、 "count":2、 "message":null、 "data":[{"year":2012}、{"year":2013}]}

これは私が期待していたことで問題ありません。

しかし、このreturnjsonデータセットに文字列型のdescription値を含めるように求められました。年の値に基づきます。

year = 2012(現在の年)の説明は「今年」、year = 2013の説明は「来年」、year = 2011の説明は「前の年」、year=2010の説明は「2010」などになります。 。

私が返さなければならないのは、次のようなものです:{"success":true、 "count":2、 "message":null、 "data":[{"year":2012、 "description": "this year"}、 {"年":2013、 "説明":"来年"}]

私のリソースクラス

 @GET
@Path("/{countryCd}/upcoming")
@Produces("application/json")
public  JResponse<JsonResponse> getYearsForUpcoming(@PathParam("countryCd") 
     String  countryCode) {

     JobDao jobDao =new JobDao();   
     JsonResponse res= new JsonResponse();


   @SuppressWarnings({ })
List<Jobs> jobList=  jobDao.getYearsForUpcoming(countryCode);
   if(jobList==null){
       throw new NotFoundException("Error occured! NO data found");
   }

    int count = jobList.size();
    res.setCount(count);
    res.setData(jobList);

           return JResponse.ok(res).build();

}

私の質問

String sql = "SELECTdistinct year(s_date)as year from jobs where country =:countryCode and year(s_date)> = year(curdate())order by year(s_date)asc"; クエリquery=session.createSQLQuery(sql).addScalar( "year")。setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
query.setParameter( "countryCode"、countryCode); upcomingRegattaList = query.list();

Jobs.java(テーブルジョブ用にmyeclipseで生成されたエンティティ)

パブリッククラスJobsはjava.io.Serializable{を実装します

private static final long serialVersionUID = 1L;
private Integer jobId;
private String status;
    private Date  SDate;
    //some more

    // getter and setters

}

エンティティにないJSONデータに新しい属性を追加する方法がわかりません。どんなアイデアでも大歓迎です。

前もって感謝します

4

1 に答える 1

0

おそらく、次のような新しいオブジェクトをマップするために、もう1つのエンティティを作成する必要があります。

public class Data {
    private String year;
    private String description;
}

次に、このエンティティのリストをロードして、応答に追加します。

于 2012-09-04T16:03:14.470 に答える