String name не должен быть null если chatType = GROUP. Иначе - name должен быть null

Есть сущность, как сделать при помощи аннотаций так, чтобы в случае когда type = GROUP - name не был null. Но если type не GROUP - тогда name может быть null.

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
@Builder
@Entity
@Table(name = "chat")
public class Chat {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    private List<Long> chatUsers = new ArrayList<>();

    @NotNull
    @Enumerated(EnumType.STRING)
    @Column(nullable = false)
    private ChatType type;


    
    private String name; // обязателен если type = GROUP иначе null

    @Nullable
    private String description; 

    @OneToMany(mappedBy = "chat")
    private List<Message> chatMessages = new ArrayList<>();

}

Ответы (1 шт):

Автор решения: had0uken

Вам нужно создавать собственную аннотацию, и класс Валидатор, который имплементирует ConstraintValidator (пакет javax.validation), и в этом классе имплементировать методы initialize и isValid. А соответственно ваше поле name отметить этой аннотацией.

→ Ссылка