2017-11-20 4 views
0
@Entity 
public SampleEntity { 

    @Id 
    private long id; 

    private String name; 

    private String description; 

    public SampleEntity(String name) { 
    // some logic 
    description = doSomeThing(name); 
    } 

    public SampleEntity() {} 

    // getters and setters 
} 

と言ってくださいnameのみが渡されているときに説明を更新したいとします。Springエンティティ内のアプリケーションロジック

次のように私はPOSTリクエストを送信する場合:応答で

/POST books 
{ 
    "name": "some_name" 
} 

descriptionプロパティはまだnullになります。

spring-data-restspring-data-jpaを使用して、カスタムコントローラを定義せずにエンティティを公開しています。私のEntityクラス以外のロジックを分離する必要がある場合は、spring-data-restで実現できる簡単な例を教えてください。

+0

名前から直接派生したエンティティには、なぜ説明がありますか?説明は冗長です。それをエンティティから削除するだけです。そうでなければ、あなたはまた、1.記述の設定者を削除する必要があります、名前の設定者も派生し、説明を設定します。 –

+0

descriptionは、説明が明示的に渡されない場合、nameから導出されます。 – reversiblean

+1

JSON marshallerはコンストラクタを引数として名前をとっては呼び出しません。引数なしのコンストラクタを呼び出し、次にさまざまなプロパティを設定します。このロジックはエンティティ内にあるべきではありません。それはあなたの奉仕の中にあるはずです。 –

答えて

2

ロジックをEntityクラスの内側に配置することはお勧めできません。この場合に必要なのは注釈付きハンドラRepositoryEventHandlerです。あなたが探しているものを容易にする様々な注釈@HandleBeforeSaveがあります。
ここに例がありますhere

関連する問題