Мы используем Lombok для наших сущностей, чтобы сгенерировать этот общий шаблон, такой как конструкторы, hash / equals и toString.
В то же время мы хотели бы сохранить наши объекты неизменными. К сожалению, мы не можем сделать полностью неизменяемыми (например, со свойствами final
), потому что процессорам JPA / Hibernate требуется конструктор без аргументов и устанавливаются свойства для отражения.
@lombok.Data
не подходит, потому что создает публичные сеттеры
@lombok.Value
не подходит, потому что он задает свойства final
, и Hibernate не может установить их поверх отражения.
что нас действительно устраивает:
@Getter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@ToString
@Entity
public class Company {
@Id
private int id;
private String name;
}
Но это опять-таки создает для нас образец, копируя каждый раз 5 аннотаций и портя код.
К сожалению, в Ломбоке я не нашел способа объединять аннотации в метааннотации, как в Spring.
Вопрос: есть ли в Ломбоке нестандартная аннотация для генерации таких общедоступных объектов ?
Или
есть ли способ объявить локальную метааннотацию ?