2015-10-15 104 views
0

我有一个模型,其中有一个@Column(nullable = false)批注Hibernate和所有字段有nullable = false,我想以编程方式添加一些新的批注像@NotNull和@ApiModelProperty (required = true) - 用于招摇。以编程方式添加Java批注

所以,我想能够解析来自我的应用程序的模型中的所有字段,获取现有的注释并基于这些添加新的注释。这可以做到吗?

更新:问题是每次添加新字段时,如果它不是可以为空,那么至少需要为某些框架添加另外2个注释,并且很容易忘记所需的全部内容。此外,我还想添加一些基于@Column长度属性的注释 - >像@Length那样会产生一个验证错误,并且仔细检查所有代码并仔细检查我们是否添加了所有的代码缺少注释。这就是为什么我想知道我是否可以拥有一些配置类,可以解析所有实体并添加缺少的注释。

+1

为什么编程?假设你有一个脚本。一切皆有可能。但是,我不建议。你只需要一个好的IDE,用多行代替@Column(nullable = false)行,即相同的列+你需要的额外代码。 Intellij IDEA适合多行替换,随后您可以重新格式化所有您想要的代码。 –

+0

更新的问题。 (我试着首先评论,但我不能;不知道为什么我现在可以) –

回答

0

你需要的是Programmatic constraint definition。以下是使用FluentApi格式的示例。它扩大到满足您的需求

ConstraintMapping mapping = new ConstraintMapping(); 
mapping.type(Car.class) 
    .property("manufacturer", FIELD) 
     .constraint(new NotNullDef()) 
    .property("licensePlate", FIELD) 
     .constraint(new NotNullDef()) 
     .constraint(new SizeDef().min(2).max(14)) 
    .property("seatCount", FIELD) 
     .constraint(new MinDef()value (2)) 
.type(RentalCar.class) 
    .property("rentalStation", METHOD) 
     .constraint(new NotNullDef()); 

进一步的细节和例子可供here

附加resource here(有点老了,但仍然有效)