Составные аннотации проверки

Я хотел бы сгруппировать некоторые аннотации в одном, а затем нужно, чтобы аннотации нормально работали с Hibernate-validator и утилитой generate-ddl Hibernate.

У меня есть куча сущностей, и у большинства из них были похожие поля. Например:

@Entity 
public class Usuario implements Serializable {

    @Column(name = "ID", nullable = false)
    @Id
    private Long id;

    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @Column(name = "CODIGO", nullable = false)
    @NotNull
    private Integer code;

    @Column(name = "NOMBRE", length = 75, nullable = false)
    @NotNull
    @Size(max = 75)
    private String name;

    @Column(name = "CLAVE", length = 75, nullable = false)
    @NotNull
    @Size(max = 75)
    private String password;

    @Column(name = "ES_ADMINISTRADOR")
    @NotNull
    @Type(type = "org.hibernate.type.NumericBooleanType")
    private Boolean isAdmin;

    [...]
}

И я хочу иметь что-то вроде этого другого

@Entity 
public class Usuario implements Serializable {

    @Column(name = "ID", nullable = false)
    @Id
    private Long id;

    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    @CodeField
    private Integer code;

    @Column(name = "NOMBRE")
    @NameField
    private String name;

    @Column(name = "CLAVE", length = 75, nullable = false)
    @NotNull
    @Size(max = 75)
    private String password;

    @Column(name = "ES_ADMINISTRADOR")
    @BooleanField
    private Boolean isAdmin;

    [...]
}

Могу ли я сделать это?


person JCalcines    schedule 24.01.2014    source источник
comment
Вы хотите объединить разметку схемы JPA и проверки JSR-303 в одну аннотацию...? Нет, для этого нет постоянной поддержки :(   -  person Affe    schedule 25.01.2014
comment
@Affe Да, я боюсь этого, но я надеюсь, что в Hibernate есть способ сделать что-то подобное.   -  person JCalcines    schedule 25.01.2014


Ответы (2)


Нет, это невозможно. Функция композиции Bean Validation позволяет объединять несколько аннотаций ограничений в новое ограничение более высокого уровня, но при этом не учитываются никакие аннотации JPA.

person Gunnar    schedule 28.01.2014

Я не уверен, чего именно вы хотите добиться, но что касается Hibernate Validator, то можно создавать свои собственные ограничения посредством реализации интерфейса ConstraintValidator.

Я предлагаю вам прочитать руководство, это довольно просто: http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-customconstraints.html

person Miron Balcerzak    schedule 31.03.2014