2017-11-20 3 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 만 전달 될 때 설명을 업데이트하고 싶습니다. 다음과 같이 내가 POST 요청을 보내는 경우스프링 엔티티의 응용 프로그램 논리

: 응답에

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

description 속성은 여전히 ​​null 될 것입니다.

spring-data-restspring-data-jpa을 사용하여 사용자 지정 컨트롤러를 정의하지 않고 내 개체를 노출합니다. Entity 클래스 외부의 로직을 분리해야하는 경우 스프링 데이터를 사용하여이를 달성 할 수있는 간단한 예제를 제공하십시오.

+0

이름에서 직접 파생 된 엔티티에 대한 설명이있는 이유는 무엇입니까? 설명이 중복됩니다. 엔티티에서 제거하십시오. 그렇지 않으면, 또한 설명의 세터를 제거해야합니다, 이름의 setter도 파생 및 설명을 설정하십시오. –

+0

설명은 설명이 명시 적으로 전달되지 않은 경우 이름에서 파생됩니다. – reversiblean

+1

JSON marshaller는 생성자를 인수로 이름을 지정하지 않습니다. 인수가없는 생성자를 호출 한 다음 다양한 속성을 설정합니다. 이 논리는 엔티티에 있어서는 안됩니다. 그것은 당신의 봉사에 있어야합니다. –

답변

2

논리를 Entity 클래스에 넣는 것은 좋지 않습니다. 이 경우에 필요한 것은 Annotated Handler RepositoryEventHandler입니다. 당신이 찾고있는 것을 용이하게하는 다양한 주석 @HandleBeforeSave가 있습니다.
다음은 예제입니다 here