1

Hibernateを使用してエンティティをテーブルに追加しようとしていると仮定します。DAOを追加する前に、エンティティがすでに存在するかどうかを確認し、すでに存在する場合はnullオブジェクトを返すか、追加されたエンティティIDを返します。

@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public T addEntity(@RequestBody State state) {
    T response = null;
    try {
        response = getService().add(state);
    } catch (Exception e) {
        e.printStackTrace();


    }
    return response;

}

しかし、nullが返された場合、正しいHTTPエラーコード400を表示したいのですが、nullを返す代わりに、春にそれを行う方法はありますか?ありがとう!

編集:

私はこのようなことを試しました:

@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public T addEntity(@RequestBody String message,
        HttpServletResponse httpResponse) throws Exception {
    T response = null;
    try {
        response = getService().add(message);
    } catch (Exception e) {
        httpResponse.setStatus(409);
        e.printStackTrace();
        throw new Exception("State already exists, Error 409");
    }
    return response;

}

ただし、「エラー500状態はすでに存在します、エラー409」として例外が発生します。

4

1 に答える 1

3

手動で直接設定することができます:

@ResponseBody
@RequestMapping(method = RequestMethod.POST)
public T addEntity(@RequestBody State state, HttpServletResponse httpResponse) {
    T response = null;
    try {
        response = getService().add(state);
    } catch (Exception e) {
        httpResponse.setStatus(400);
        e.printStackTrace();


    }
    return response;

}
于 2013-01-30T21:26:17.703 に答える