CUSTOM한 JsonSerializer 만들기
결론 @JsonSerialize(using = AccountSerializer.class)를 선언해서 사용
실제 JSON으로 Serialization 할 경우 Account 정보의 id 정보만 포함된다.
Account class
@Entity
@Getter @Setter @EqualsAndHashCode(of = "id")
@Builder @NoArgsConstructor @AllArgsConstructor
public class Account {
@Id @GeneratedValue
private Integer id;
@Column(unique = true)
private String email;
private String password;
@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
private Set<AccountRole> roles;
}
JsonSerializer class
public class AccountSerializer extends JsonSerializer<Account> {
@Override
public void serialize(Account account, JsonGenerator gen, SerializerProvider serializers) throws IOException {
gen.writeStartObject();
gen.writeNumberField("managerId", account.getId());
gen.writeEndObject();
}
}
JsonSerializer class 활용
@JsonSerialize(using = AccountSerializer.class) 선언해서 사용
실제 JSON으로 Serialization 할 경우 Account 정보의 id 정보만 포함된다.
@Builder @AllArgsConstructor @NoArgsConstructor
@Getter @Setter @EqualsAndHashCode(of ={ "id" ,"name"})
@Entity
public class Event {
@ManyToOne
@JsonSerialize(using = AccountSerializer.class)
private Account manager;
}